Я здесь с новым вопросом.Как работает индексирование края в графическом купе?
Я делаю пользовательский алгоритм, которому нужны предварительно вычислимые данные для графов графа. Я использую AllEdgesIterator так:
AllEdgesIterator it = graph.getAllEdges();
int nbEdges = it.getCount();
int count = 0;
int[] myData = new int[nbEdges];
while (it.next())
{
count++;
...
}
Первая странная вещь, что nbEdges равно 15565 краям, но граф равно только 14417. Как это возможно?
Вторая странная вещь, когда я запускаю свой пользовательский A *: я просто просматриваю узлы с помощью outEdgeExplorer, но получаю IndexOutOfBound в индексе 15569 на массиве myData. Я думал, что краевые индексы были включены в [0; N-1], где N - количество ребер, действительно ли это так?
Что может быть здесь? Кстати, у меня отключены иерархии сокращения графиков.
Благодарим вас за ответ так быстро каждый раз!
Хорошо, я вижу, вы могли бы объяснить немного больше виртуальных краев? Что они и зачем вам это нужно? Являются ли они важными или я могу их пропустить? Как я могу узнать, что такое исходный край? Благодаря ! – user3890394
Они вводятся между существующими соединениями и точками запроса, чтобы алгоритмы не нуждались в специальной обработке для этих точек. QueryResult из каждой точки (возвращается из locationIndex.findClosest) будет содержать элемент EdgeIteratorState, указывающий на исходный край. – Karussell
Хорошо, спасибо вам большое :) – user3890394