将矩阵转换为字典图时出现重复的麻烦

时间:2019-02-18 09:11:36

标签: python

我正在使用集合将矩阵转换成字典,因此我最终可以应用djikstras算法。但是,由于矩阵中存在一些重复的数字,因此我得到的结果不正确

这是一个80 x 80的矩阵,转换为类似于网格的有向图,只能向右或向下移动。

matrix = [[0,1,2], [3,4,5], [6,7,8]]


graph = {
0: [1,3]
1: [2,4]
2: [5]
3: [0,4] ...
}


import collections

def read_numbers(file):
    with open(file) as f:
        text = f.read()

    numbers = []
    text = text.replace('\n', ',')
    text = text.replace(' ', '')
    for s in text.split(','):
        numbers.append(int(s))

    return numbers

numbers = read_numbers(r'/Users/mango/Desktop/p081_matrix.txt')
SIZE_80x80 = 80 * 80
assert len(numbers) == SIZE_80x80, "Expecting 80x80 matrix!"

matrix = []
for index in range(0, SIZE_80x80, 80):
    matrix.append(numbers[index:index+80])

graph = collections.defaultdict(list)

for r, row in enumerate(matrix):
    for c, num in enumerate(row):
        if c < 80-1:
           graph[num].append(matrix[r][c+1])
        if r < 80-1:
           graph[num].append(matrix[r+1][c])

print(matrix)

但是,矩阵中的数字具有重复项,因此,每个项可能没有4个键,而是每个矩阵有4个,因为矩阵中的不同位置还有另一个键,因此邻居也不同。

0 个答案:

没有答案