Здравствуйте, рыцари Кодсилы.
Заинтересовала одна задача (придумал ее сам) и надеюсь, вы мне поможете совершить маленький, но "крестовый" поход.
У нас есть многоугольники (простые, попарно непересекающиеся, если проблемно будет, то выпуклые) в двухмерном пространстве, заданные списками координат своих вершин. Назовем их (многоугольники) препятствиями. Есть стартовая точка. И поступают в online точки, которые являются финишными. Необходимо найти за log(n), где n — суммарное кол-во вершин многоугольников, кратчайший путь от стартовой до финишной точки, который непереcикается с препятствиями. Я вам выскажу свои мысли а вы уж решите присудить мне звание рыцаря(и возможно помочь) или изгнать. Я думал над таким: соединим отрезками все точки (стартовую и вершины многоугольников) и скажем что это ребра, а вершинами будут точки, которые соединялись ребрами. Ребра взвешенные, а их веса — евклидовое расстояние между точками соединенными ребром. Таким образом, мы получили граф. По нему мы можем найти кратчайшие пути до всех вершин (точек) от стартовой вершины (точки). Теперь я столкнулся с проблемой: подозреваю что нужно делать какое-то разбиение пространства (поиска), возможно, для того чтобы «быстро» локализировать точку (финишную) поступившую из потока, т.е. найти вершину, которая является предком финишной в кратчайшем пути в терминах графов. Вопрос к вам: может кто-то знает, какое разбиение пространства надо делать или надо решать проблему другим способом? Спасибо за прочтение.