Бодрого времени суток!
Ищу алгарим для решения моей задачки, хоть на php хоть на js, это не суть важно.
Дан массив:
[0, "name", x, y, z, 10, [1,2]],
[1, "name", x, y, z, 10, [0,3]],
[2, "name", x, y, z, 5, [0,3,4]],
[3, "name", x, y, z, 10, [2,1,4]],
[4, "name", x, y, z, 10, [3,2]],
[5, "name", x, y, z, 10, [4]]
по сути, каждый элемент массива это точка в пространстве которая соединена с другими такими же точками, точки с которыми она соединяется хранится во вложенном массиве.
Разумеется точки не связаны все друг с другом напрямую. то есть от точки 0 до точки 5 можно попасть только через соседние точки, причем можно попасть разными путями, например:
1) 0->2->3->4->5
2) 0->1->3->4->5
3) 0->2->4->5
3 путь самый коротки по колличеству звеньев, это одна из целей алгоритма найти короткий путь, но это еще не все)
у каждой точки есть значение безопасности, например у точки 0 значение равно 10 (безопасно),
а у точки 2, уровень безопасности ниже 6, то есть не безопасно.
на выходе работы алгоритма должно выходить 2 набора точек в нашем случае:
2) 0->1->3->4->5 // самый короткий из безопасных путей
3) 0->2->4->5 // самый короткий путь
Собственно посоветуйте оптимальное решение на ваш взгляд для данной задачки.
PS. массив состоит более чем из 1000 элементов
PPS. Заранее большое человеческое спасибо! =)
PPPS. Для наглядности прикрепил картинку =)