Я создал диаграмму Вороного, используя библиотеку Python scipy.spatial
из набора точек LatLon, чтобы найти соседей каждой точки. Затем я обнаружил, что триангуляция Делоне была бы более полезной, и теперь я легко могу найти соседей «первого уровня» и «второго уровня» каждой точки, используя этот алгоритм:
def findNeighbors(delaunay):
"Returns a adjacency list of the graph"
neighbors = defaultdict(set)
for simplex in delaunay.simplices:
for vertice in simplex:
other = set(simplex)
other.remove(vertice)
neighbors[vertice] = neighbors[vertice].union(other)
return neighbors
def neighborCount(graph, start, target):
if target in graph[start]:
return 'First Tier Neighbor'
elif graph[start] & graph[target]:
return 'Second Tier Neighbor'
Но проблема в том, что мне нужно найти «соседа 6-го уровня», и я не могу найти способ сделать это, не просматривая весь список смежности. Вот пример "Соседа 3-го уровня", который я хочу найти.
Есть ли более умный способ сделать это?