完成以下代码:""" File: fromexample.py Project 12.9 Defines and tests the all pairs shortest paths algorithm of Floyd. Uses the graph from Figure 12.19 of the text, as represented in the file example.txt. """ from graph import LinkedDirectedGraph import random from arrays import Array # Functions for working with infinity def isLessWithInfinity(a, b): """Returns False if a == b or a == INFINITY and b != INFINITY. Otherwise, returns True if b == INFINITY or returns a < b.""" if a == LinkedDirectedGraph.INFINITY and b == LinkedDirectedGraph.INFINITY: return False elif b == LinkedDirectedGraph.INFINITY: return True elif a == LinkedDirectedGraph.INFINITY: return False else: return a < b def addWithInfinity(a, b): """If a == INFINITY or b == INFINITY, returns INFINITY. Otherwise, returns a + b.""" if a == LinkedDirectedGraph.INFINITY or b == LinkedDirectedGraph.INFINITY: return LinkedDirectedGraph.INFINITY else: return a + b def minDistance(a, b): if isLessWithInfinity(a, b): return a else: return b # Define a function that uses Floyd's algorithm def allPairsShortestPaths(matrix): """ please complete the Floyd algorithm here """ pass # Define a function to print a labeled distance matrix def printDistanceMatrix(matrix, table): """Prints the distance matrix with rows and columns labels with the index positions and vertex labels.""" labels = Array(len(table)) index = 0 labelWidth = 0 indexWidth = 0 for label in table: labels[table[label]] = label labelWidth = max(labelWidth, len(str(label))) indexWidth = max(indexWidth, len(str(index))) index += 1 weightWidth = 0 for row in range(matrix.getHeight()): for column in range(matrix.getWidth()): weightWidth = max(weightWidth, len(str(matrix[row][column]))) weightWidth = max(weightWidth, labelWidth, indexWidth) topRowLeftMargin
时间: 2023-06-06 07:05:16 浏览: 76
以下是完成代码的步骤:
1. 导入所需的模块及类。代码中需要使用LinkedDirectedGraph类和Array类,因此需要导入graph和arrays模块。
2. 创建一个LinkedDirectedGraph对象,并读取文件example.txt中的图数据,将其添加到图中。
3. 实现Floyd算法,计算所有节点对之间的最短路径,将结果保存到一个二维数组中。
4. 输出结果数组,展示所有节点对之间的最短路径。
相关问题
代码如下:""" File: fromexample.py Project 12.9 Defines and tests the all pairs shortest paths algorithm of Floyd. Uses the graph from Figure 12.19 of the text, as represented in the file example.txt. """ from graph import LinkedDirectedGraph import random from arrays import Array # Functions for working with infinity def isLessWithInfinity(a, b): """Returns False if a == b or a == INFINITY and b != INFINITY. Otherwise, returns True if b == INFINITY or returns a < b.""" if a == LinkedDirectedGraph.INFINITY and b == LinkedDirectedGraph.INFINITY: return False elif b == LinkedDirectedGraph.INFINITY: return True elif a == LinkedDirectedGraph.INFINITY: return False else: return a < b def addWithInfinity(a, b): """If a == INFINITY or b == INFINITY, returns INFINITY. Otherwise, returns a + b.""" if a == LinkedDirectedGraph.INFINITY or b == LinkedDirectedGraph.INFINITY: return LinkedDirectedGraph.INFINITY else: return a + b def minDistance(a, b): if isLessWithInfinity(a, b): return a else: return b # Define a function that uses Floyd's algorithm def allPairsShortestPaths(matrix): """ please complete the Floyd algorithm here """ pass # Define a function to print a labeled distance matrix def printDistanceMatrix(matrix, table): """Prints the distance matrix with rows and columns labels with the index positions and vertex labels.""" labels = Array(len(table)) index = 0 labelWidth = 0 indexWidth = 0 for label in table: labels[table[label]] = label labelWidth = max(labelWidth, len(str(label))) indexWidth = max(indexWidth, len(str(index))) index += 1 weightWidth = 0 for row in range(matrix.getHeight()): for column in range(matrix.getWidth()): weightWidth = max(weightWidth, len(str(matrix[row][column]))) weightWidth = max(weightWidth, labelWidth, indexWidth) topRowLeftMargin
这段代码定义并测试 Floyd 的全部最短路径算法,使用的是文本图 12.19 中的图,该图以 example.txt 文件的形式表示。有从graph中导入LinkedDirectedGraph,从arrays中导入Array,还有随机数生成函数。
切换分支报错Your local changes to the following files would be overwritten by checkout: linux/Make.defines
切换分支报错"Your local changes to the following files would be overwritten by checkout: linux/Make.defines"是因为你在当前分支有未提交的更改,而切换分支时会覆盖这些更改。要解决这个问题,你可以选择以下几种方法之一:
1. 提交或保存更改:如果你想保留当前分支的更改,可以先提交或保存这些更改,然后再切换分支。
2. 暂存更改:如果你不想提交或保存当前分支的更改,但也不想丢失这些更改,可以使用git stash命令将更改暂存起来,然后再切换分支。切换分支后,你可以使用git stash pop命令将暂存的更改应用到新的分支上。
3. 放弃更改:如果你不需要保留当前分支的更改,可以使用git reset命令将文件恢复到最近一次提交的状态,然后再切换分支。