使用BFS DFS解决8个难题问题(使用Python。需要一些建议)

时间:2019-02-15 20:47:46

标签: python graph depth-first-search breadth-first-search

我的最终状态是

  

0 1 2
3 4 5
6 7 8

我的图看起来像这样

graph = {0 :[1, 3],
         1 :[0, 4, 2],
         2 :[1, 5],
         3 :[0, 4, 6],
         4 :[1, 3, 5, 7],
         5 :[2, 4, 8],
         6 :[3, 7],
         7 :[4, 6, 8],
         8 :[5 ,7]
        }

1-我想知道是否应该尝试其他方法,例如list,if语句而不是graph(上面)。
2-图形有问题吗?
给出的问题-

  

示例[1,5,3,2,0,4,7,8,6] <-更像这样
1 5 3
2 0 4   
7 8 6

我应该找到具有给定状态的最终状态

谢谢

1 个答案:

答案 0 :(得分:0)

因此,有4种极端情况:

  • 第一排
  • 底行
  • 最左列
  • 最右列

(和组合)

我们可以像这样轻松地处理它们:

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

width = 3
height = 3

graph = {number: list() for number in data}

for idx, number in enumerate(data):
    current_height = int(idx / width)
    current_width = idx % width

    if current_width != width - 1:  # if next element in same row
        graph[number].append(data[idx + 1])

    if current_width != 0:  # if prev element in same row
        graph[number].append(data[idx - 1])

    if current_height != 0:  # if there is top element
        graph[number].append(data[idx - 3])

    if current_height != height - 1:  # if there is bottom element
        graph[number].append(data[idx + 3])

import pprint
pprint.pprint(graph)

此代码将构造图形,但这完全是为了解决这个难题吗?。