NetworkX. Проблема с узлами и ребрами
Я новичок в Python и у меня проблемы с графиком networkx
Вот фрагмент кода, который представляет собой массив пикселей [x, y]. Мне нужно найти кратчайший путь от начальной точки - (0, 0) до моей цели - (100, 100).
Я пробовал сделать это двумя разными способами.
- 1-й способ со списком. Это нормально, но занимает слишком много времени.
- 2-й способ (
networkx) соединил каждый узел с другим. Итак, когда я делаюprint(nx.bidirectional_shortest_path(D,(0, 0),(100, 100)))его результат был(0, 0) , (100, 100)вместо(0, 0), (1, 0), (2, 0)...(100, 99), (100, 100).
Можно ли соединить каждый узел из массива (x, y) с помощью dif.step(x +-1, y) и (x, y +-1). Скриншот сделан с медленным списком результатов.
Код:
import time
import numpy as np
from mss import mss
import pyautogui as pg
import win32gui, win32ui, win32con, win32api
import networkx as nx
from networkx import edge_dfs
import copy
import cv2
result = find_color(our_color, monitor) #array of pixels
[[ 0 0]
[ 0 1]
[ 0 2]
...
[133 159]
[133 160]
[133 161]]
b = copy.deepcopy(result)
new_list = []
for i in range(len(result)):
if [result[i][0]+1,result[i][1]] in b :
#D.add_edge(((result[i][0],result[i][1])), ((result[i][0]+1,result[i][1])))
#new_list.append((((result[i][0],result[i][1])), ((result[i][0]+1,result[i][1]))))
if [result[i][0]-1,result[i][1]] in b :
#D.add_edge(((result[i][0],result[i][1])), ((result[i][0]-1,result[i][1])))
#noviilist.append((((result[i][0],result[i][1])), ((result[i][0]-1,result[i][1]))))
if [result[i][0],result[i][1]+1] in b :
#D.add_edge(((result[i][0],result[i][1])), ((result[i][0],result[i][1]+1)))
#noviilist.append((((result[i][0],result[i][1])), ((result[i][0],result[i][1]+1))))
if [result[i][0],result[i][1]-1] in b :
#D.add_edge(((result[i][0],result[i][1])), ((result[i][0],result[i][1]-1)))
#noviilist.append((((result[i][0],result[i][1])), ((result[i][0],result[i][1]-1))))
#b.remove(result[i]) # for list
D = nx.to_networkx_graph(new_list, create_using=nx.Graph)
print(nx.bidirectional_shortest_path(D,(0, 0),(100, 100)))
