Как я понимаю, ваш 2D-массив уже является графиком. Узел графа представлен парой (i, j)
и может иметь соседние узлы, такие как (i + 1, j)
, (i, j + 1)
и т. Д. Вы можете написать служебную функцию для вашего массива, которая скрывает эти низкоуровневые определения соседей и пропускает клетки, которые заняты.
API de.polygonal.ds для структуры данных График содержит этот пример для построения графа:
var graph = new de.polygonal.ds.Graph<String>();
var a = graph.addNode("a");
var b = graph.addNode("b");
var c = graph.addNode("c");
graph.addSingleArc(a, b, 1.0);
graph.addSingleArc(b, a, 1.0);
graph.addMutualArc(a, c, 1.0);
Настройте пример для построения 2D-массива, который содержит узел для каждого свободного (i, j)
исходного 2D-массива. Затем просмотрите двумерный массив узлов и вызовите addMutualArc()
, чтобы соединить соседние узлы.