Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果给定一个元组列表,说明元素的已知顺序,如何对N个元素进行排序?_Python_Sorting_Tuples - Fatal编程技术网

Python 如果给定一个元组列表,说明元素的已知顺序,如何对N个元素进行排序?

Python 如果给定一个元组列表,说明元素的已知顺序,如何对N个元素进行排序?,python,sorting,tuples,Python,Sorting,Tuples,很抱歉,标题太复杂了 基本上,我正在尝试实现一个系统,它可以帮助对没有已知写作日期的文档进行排序。 它由两个输入组成: 输入1:一个元组,其中第一个元素是文档数,N。第二个元素是具有已知写入顺序的文档对数,L。(第一份文件写在第二份文件之前) 输入2:元组的列表。每个元组包含两个元素(文档)。第一份文件是在第二份文件之前编写的。例如:(1 2),(3 4)表示document1在document2之前编写,document3在document4之前编写 接下来,软件必须确定是否有按时间顺序对所有

很抱歉,标题太复杂了

基本上,我正在尝试实现一个系统,它可以帮助对没有已知写作日期的文档进行排序。 它由两个输入组成:

输入1:一个元组,其中第一个元素是文档数,N。第二个元素是具有已知写入顺序的文档对数,L。(第一份文件写在第二份文件之前)

输入2:元组的列表。每个元组包含两个元素(文档)。第一份文件是在第二份文件之前编写的。例如:(1 2),(3 4)表示document1document2之前编写,document3document4之前编写

接下来,软件必须确定是否有按时间顺序对所有文档进行排序的方法,可以有三种输出:

不确定-表示文档的时间组织不一致,无法对其进行排序

不完整-表示信息缺失,系统无法找到排序方法

如果信息足够,系统应输出文档的写入顺序

到目前为止,我已经成功地接受了这两种输入,但我不知道从哪里开始对文档进行排序。有什么建议吗

以下是迄今为止我的代码(Python3):


我感谢所有建议:)

构建一个有向图。输入是边。检查是否存在表明输入不一致的周期。找到“最左边”的节点,即没有任何边的节点,其左边没有任何边。是最左边的吗?不完整。然后,为图中的每个节点分配索引,该索引等于从最左侧节点开始的最长路径的长度。由于没有(定向)循环,您可能只需从最左侧的节点开始执行BFS,并在每个步骤中为节点指定其当前值和其父节点给定值的最大值。然后遍历所有节点,并将数字放入相应的索引中。两个节点分配了相同的索引?不完整。

输出条件是否表示“不一致”--无排序方式,“不完整”--多种排序方式,“完整”--一种排序方式?@Anonymous1847是的,这是正确的描述方式。
LN = tuple(int(x.strip()) for x in input("Number of docs. / Number of known pairs").split(' '))
print(LN)
if (LN[1]) > (LN[0]**2):
    print("Invalid number of pairs")
else:
    A = ['none'] * LN[0]
    for i in range(LN[0]):
        t = tuple(int(x.strip()) for x in input("Pair:").split(' '))
        A[i] = t
    print(A)