我们已经将标准初学者的python问题作为家庭作业练习,但我对它的研究表明人们总是使用Networkx来解决这些图形类型的节点问题,而我们不允许使用Networkx内置来解决它。我希望以一种很好的方式提出建议来解决这个问题。
有五个节点(名为1,2,3,4,5),顺序为:
这是要读入的示例数据(请注意,这只是一个数据集 - 它也必须与其他对一起使用):
<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这样的软件包)。快乐的编码。