<p>您正在尝试求解一种被称为“<a href="https://en.wikipedia.org/wiki/Graph_isomorphism_problem" rel="nofollow noreferrer"><strong><em>graph isomorphism problem</em></strong></a>”的修改形式。现有的算法可以确定两个图是否同构,但是现有的算法都非常慢,特别是对于大型图。你知道吗</p>
<p>“<em>图形</em>”是带有点和线的图表。你知道吗</p>
<p>假设我们有两个嵌套列表:</p>
<pre><code>L1 = [[0, 1], [0, 2], [1, 2], [1, 3], [0, 1, 2]]
L2 = [[4, 1], [4, 0], [1, 3], [1, 0], [4, 0, 1]]
</code></pre>
<p>按照以下说明<code>L1</code>绘制图片:</p>
<ul>
<li>对于子列表的每个元素,画一个点。例如,考虑子列表
<code>[0, 1]</code>。它将得到两个点,一个点代表<code>0</code>,一个点代表<code>1</code>。你知道吗</li>
<li>如果一组点在同一个位置,就在它们周围画一个圆
子列表。你知道吗</li>
<li>如果两个点代表同一个整数,在两个点之间画一条线。你知道吗</li>
</ul>
<p><a href="https://i.stack.imgur.com/vvNWPl.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/vvNWPl.png" alt="initial graph"/></a></p>
<p>之后,将每组点(子列表)压缩为单个点。你知道吗</p>
<p><a href="https://i.stack.imgur.com/45moZl.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/45moZl.png" alt="condensed graph"/></a></p>
<p>您可以为嵌套列表<code>L2</code>绘制一个类似的图,问题是,在删除所有数字之后,L1和L2的两个图看起来是否相同?你可能需要交换周围的颜色(蓝色边变成红色,红色变成蓝色,等等…),也可能需要移动点,直到它看起来一样。你知道吗</p>
<p>传统的图同构问题是将所有相同颜色的点连接起来的线。你的问题是稍微不同于传统的在你的边缘是彩色的。你知道吗</p>
<p>我认为,你可以摆脱单独的颜色和简单的数字,每个边缘的颜色数量,过去有。然后它变成一个“边加权图”</p>
<p><a href="https://i.stack.imgur.com/YfuNd.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/YfuNd.png" alt="edge-weighted graph"/></a></p>
<p>在google上搜索“边加权图的图同构”</p>
<p>你正在做的工作非常困难。我建议你在当地大学数学系的网站上寻找你可以联系的人。寻找职称为“图论者”的教授的电子邮件地址。联系他们,征求他们的意见。你知道吗</p>
<p>就像我说的,你的工作非常困难。你知道吗</p>
<p>我想你可以这样解决:</p>
<ol>
<li>为左侧列表构建边加权图</li>
<li>为右列表构建边加权图</li>
<li>确定这两个图是否同构。你知道吗</li>
</ol>