-1
こんにちは場合の要素のリンクを作り、私はPythonでグラフを作成したいと思います。私はテキストファイルの配列を読み、配列の各要素を、上、下、左、右にある要素と関連付ける必要があります。画像が示すように、要素1と要素4が空いている場合、要素 "0"のテストを行います。そして、グラフモデルにグラフを生成する:
グラフは、辞書( http://www.tutorialspoint.com/python/python_dictionary.htm)私は右アムいるドキュメントに記載されていgraph= {0:[1,4],
1:[2], ...
}
?
テストにリンクしている辞書の要素をグループ化する方法についてのヒントは本当ですか?
マイコード@TonyBabarino:maze.txtで
:
111111111111111111111
121000100000013000001
101011111011111110101
101010000010000000101
101010111110111111101
100010100000100010001
101110001110101010101
100000100010001000101
111111111111111111111
いくつかのセクションでは、テストのためだけです。
import numpy as np
with open ('maze.txt') as buffer:
M = list(map(int, line.strip()) for line in buffer)
print(np.matrix(M))
def encontra_inicio(matriz): # retorna (x,y) do inicio
for i in range (len(matriz)):
for j in range(len(matriz[i])):
if (matriz[i][j] == 2):
return [i,j]
def encontra_fim(matriz):
for i in range (len(matriz)):
for j in range(len(matriz[i])):
if (matriz[i][j] == 3):
return [i,j]
def freePath(M,xy,stack):
x=xy[0]
y=xy[1]
if(xy in stack):
if(M[x+1][y] == 0): #baixo
jaVisitado([x+1,y],stack)
if(M[x-1][y] == 0): #cima
jaVisitado([x-1,y],stack)
if(M[x][y+1] == 0): #direita
jaVisitado([x,y+1],stack)
if(M[x][y-1] == 0): #esquerda
jaVisitado([x,y-1],stack)
return
def jaVisitado(xy, stack):
if(xy not in stack):
stack.append(xy)
else:
return
def posCursor(xy,stack,i):
aux=i
x=stack[aux-1][0] #salva a coordenada x da stack na variavel x
y=stack[aux-1][1] #salva a coordenada y da stack na variavel y
xy[0]=x
xy[1]=y
return xy
i=0
stack=[]
xy=[]
xy=encontra_inicio(M)
stack.append(encontra_inicio(M))
for j in range(20):
freePath(M,xy,stack)
posCursor(xy,stack,i)
print i
print
print stack
は、あなたは本当にdictのグラフを作成する必要がありますか?あなたの最初のイメージのようなマトリックスを使う方が簡単でしょうか?また、私は 'IF(M [0] [1] == FREE)'の意味を理解していません。 'FREE'とは何ですか?入力例と期待される出力を与えてください。 –
FREE = 0、BUSY = 1。私の行列は0と1で作られています。だから私は壁が1で表され、フリーウェイは0で表される迷路を持っています.DFSまたはBFSグラフ検索アルゴリズムで使用するためにGRAPHを構築する必要があります。 – ialsafid
ああ、私は今理解しています。そしてなぜあなたはその行列で作業したいのですか?あなたは、行列内のセルを与えた簡単な関数を書くことができます。 –