다음 사전이 있습니다.
g = {
'A': ['A', 'B', 'C'],
'B': ['A', 'C', 'E'],
'C': ['A', 'B', 'D'],
'D': ['C','E'],
'E': ['B','D']
}
그래프를 구현하고 각 목록에는 그래프 정점의 이웃이 포함됩니다 (사전 키는 정점 자체입니다). 문제가 있습니다. 이웃 목록에서 그래프 인접 행렬을 얻는 방법을 생각할 수 없습니다. 쉽지만 파이썬을 처음 접했습니다. 누군가가 나를 도울 수 있기를 바랍니다! Python 3.5를 사용하고 있습니다.
다음 매트릭스를 생성해야합니다.
판다없이
keys=sorted(g.keys())
size=len(keys)
M = [ [0]*size for i in range(size) ]
for a,b in [(keys.index(a), keys.index(b)) for a, row in g.items() for b in row]:
M[a][b] = 2 if (a==b) else 1
M
[2, 1, 1, 0, 0],
[1, 0, 1, 0, 1],
[1, 1, 0, 1, 0],
[0, 0, 1, 0, 1],
[0, 1, 0, 1, 0]]
설명
for a, row in g.items()
사전에있는 키 : 값 항목을 for b in row
반복하고 값을 반복합니다. (a, b)를 사용했다면 이것은 우리에게 모든 쌍을 주었을 것입니다.
(keys.index(a), keys.index(b))
하지만 해당 행렬 항목에 할당 할 인덱스가 필요합니다.
keys=sorted(g.keys())
이것이 우리가 키를 추출하고 분류 한 이유입니다.
for a,b in...
인덱스 항목을 가져오고 대각선 요소를 기반으로 값 1 또는 2를 할당합니다.
M = [ [0]*size for ...
매트릭스는 초기화 전에 사용할 수 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다