이 아름다운 debug 블로그를 참조하십시오.
일부 변수 이름을 좀 더 의미있는 것으로 변경하는 것을 포함하여 약간의 디버깅을 수행했습니다. 여기 제가 지금 당장 가지고있는 것, 정확히 말하면 첨단 기술 진술서입니다.
graphed = {
1: [25, 30], 2: [11], 3: [13], 4: [17], 5: [17],
6: [26], 7: [11, 12], 8: [10, 13], 9: [14, 26],
10: [8, 11, 15], 11: [2, 7, 10], 12: [7, 16, 17],
13: [3, 8, 14], 14: [9, 13, 20], 15: [10, 19],
16: [12, 18], 17: [4, 5, 12], 18: [16, 21, 22],
19: [15, 28, 29], 20: [14, 25], 21: [18, 23],
22: [18, 24], 23: [21, 27], 24: [22, 27], 25: [1, 20],
26: [6, 9], 27: [23, 24], 28: [19], 29: [19], 30: [1]
}
letters = {
'S': [1],
'C': [10, [11], [12], [13], [14], [15], [16], [17],
[18], [19], [20], [21], [22], [23], [24],
[25], [26], [27], [28], [29], [30] ],
'O': [2, [3], [4], [5], [6]],
'N': [7, [8], [9]]}
node_path = 'CO'
def dfs(graph, start, num, visited = None):
print("ENTER dfs", start, num, visited)
# depth first search for connected nodes
start_ltr = node_path[num]
end_ltr = node_path[(num+1)]
if visited is None:
visited = []
if start in visited:
return
visited.append(start)
# if start corresponds to first letter of string, continue
print(" search for start node", start, "in list", start_ltr, letters.get(start_ltr))
if start in letters.get(start_ltr):
# find all nodes that it is connected too
for each in [x for x in graph[start] if x not in visited]:
print(" found", each, "in", graph[start])
print(" search in list", end_ltr, letters.get(end_ltr))
# if any of the connected nodes correspond to
# the next letter of string, continue...
if [each] in letters.get(end_ltr):
dfs(graph, each, (num+1), visited) #recursion
print("LEAVE dfs", visited)
return visited
lst1 = []
for i in range(1,15): # I cut back the list for less output.
lst1.append(dfs(graphed, i, 0))
print(lst1)
출력 : 당신이 이동 얻을
$ python3 so.py
ENTER dfs 1 0 None
search for start node 1 in list C [10, [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]]
LEAVE dfs [1]
ENTER dfs 2 0 None
search for start node 2 in list C [10, [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]]
LEAVE dfs [2]
ENTER dfs 3 0 None
search for start node 3 in list C [10, [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]]
LEAVE dfs [3]
ENTER dfs 4 0 None
search for start node 4 in list C [10, [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]]
LEAVE dfs [4]
ENTER dfs 5 0 None
search for start node 5 in list C [10, [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]]
LEAVE dfs [5]
ENTER dfs 6 0 None
search for start node 6 in list C [10, [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]]
LEAVE dfs [6]
ENTER dfs 7 0 None
search for start node 7 in list C [10, [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]]
LEAVE dfs [7]
ENTER dfs 8 0 None
search for start node 8 in list C [10, [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]]
LEAVE dfs [8]
ENTER dfs 9 0 None
search for start node 9 in list C [10, [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]]
LEAVE dfs [9]
ENTER dfs 10 0 None
search for start node 10 in list C [10, [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]]
found 8 in [8, 11, 15]
search in list O [2, [3], [4], [5], [6]]
found 11 in [8, 11, 15]
search in list O [2, [3], [4], [5], [6]]
found 15 in [8, 11, 15]
search in list O [2, [3], [4], [5], [6]]
LEAVE dfs [10]
ENTER dfs 11 0 None
search for start node 11 in list C [10, [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]]
LEAVE dfs [11]
ENTER dfs 12 0 None
search for start node 12 in list C [10, [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]]
LEAVE dfs [12]
ENTER dfs 13 0 None
search for start node 13 in list C [10, [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]]
LEAVE dfs [13]
ENTER dfs 14 0 None
search for start node 14 in list C [10, [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30]]
LEAVE dfs [14]
[[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14]]
합니까?