Python:图形冗余节点(没有Networkx)

时间:2018-04-09 04:24:36

标签: python graph nodes redundancy

我们已经将标准初学者的python问题作为家庭作业练习,但我对它的研究表明人们总是使用Networkx来解决这些图形类型的节点问题,而我们不允许使用Networkx内置来解决它。我希望以一种很好的方式提出建议来解决这个问题。

有五个节点(名为1,2,3,4,5),顺序为:

  • 1无处可去
  • 2只到1
  • 3进入1和5(但是5更接近,这使得3到1路径冗余)
  • 4转到1和2(但是2更接近,所以4-1是多余的)
  • 5转到2

这是要读入的示例数据(请注意,这只是一个数据集 - 它也必须与其他对一起使用):

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

这是非冗余对输出:

['R(3,5)', 'R(4,2)', 'R(5,2)', 'R(2,1)', 'R(3,1)', 'R(4,1)']

到目前为止,我的尝试是分为两个开始节点和结束节点列表:

['R(3,5)', 'R(4,2)', 'R(5,2)', 'R(2,1)']

输出:

start_value = []
end_value = []
for i in range(len(partial_order)):
    start_value.append(int(partial_order[i][2]))
for i in range(len(partial_order)):    
    end_value.append(int(partial_order[i][4]))
dictionary = dict(zip(start_value, end_value))

我想如果把它放入字典中,我可以从那里尝试一些东西,但我的字典只显示3:1而不是3:[1,5]。由于距离较近,我需要保留3-5对,因此3-1是多余的。感谢有关如何在没有Networkx的情况下取得进展的任何提示。

这是我正在阅读的页面之一 - 我试图设置这样的图形字典,这样我就可以尝试他们的find_shortest_path函数,看看是否能给我一个解决方案。 https://www.python.org/doc/essays/graphs/

更新: 我最终放弃了字典的想法并将两个列表压缩在一起,然后执行了一大堆if语句以使其正常工作。

但我真的很想听到任何人更多Pythonic的解决方案(只要它不使用像Networkx这样的软件包)。快乐的编码。

0 个答案:

没有答案