Я не смог понять эту проблему за долгое время. Предположим, что мы имеем двумерную плоскость с предопределенным корнем, которая всегда находится в начале (0,0). Эта 2D-плоскость не будет иметь ограничений на то, насколько она может быть большой.Кратчайший путь между прообразом до любой точки На графике
Давайте также скажем, что пользователь может ввести любое количество конечных чисел на этом графике (и каждая точка может лежать на этой плоскости в любом месте). Эти точки определяются как S0, S1, ... Sn, и пользователь также дает соответствующее местоположение координат X, Y этих точек.
Я хочу найти кратчайшую длину пути от корневой точки до каждой точки на графике.
Что я имею в виду под этим ?: Ну, допустим, что кратчайший путь определяется как 6. Это означает, что длина пути от корневой точки до точки S0 равна 6, длина пути от корень S1 равно 6, длина пути от корня до Sn равно 6.
, что я сделал, чтобы попытаться решить эту проблему:
Смотрите мою диаграмму: ОТКАЗА: цель моей диаграммы является покажите мне мой мыслительный процесс. Он НЕ является представителем того, как я хочу подходить к этой проблеме.
В этом примере, который я создал, предположим, что все точки равномерно разнесены друг от друга. То, что я пытался сделать, это продолжать находить средние точки между очками. Например, средняя точка между S0 и S1 равна A. Средняя точка между S2 и S3 равна B. И средняя точка между A и B - C. Корневые головки сверху до C и могут перемещаться на равное расстояние до любой точки на графике. В этом примере кратчайшая длина пути от корня до ЛЮБОЙ точки на графике равна 4. Другими словами, мне нужен самый короткий путь от root до S0, который эквивалентен кратчайшему пути от root до S1, что эквивалентно кратчайшему пути от root до S2, что эквивалентно кратчайшему пути получения от корня до S3
Проблема в том, что этот метод не будет работать ВСЕ ВРЕМЯ, особенно если у вас есть нечетное число ненулевых точек, которые случайно разбросаны по плоскости. Я не могу найти алгоритм. У кого-нибудь есть указатели/советы для меня?
Я не совсем понял вопрос. Пользователь определяет точки, S0, S1 и т. Д., Но я не понимаю, откуда берутся строки. Самый короткий путь между любыми двумя точками - это прямая линия между ними. Что мне не хватает? A, B и C кажутся совершенно произвольными. –
@ErikPhilips Я не совсем понимаю ваше замешательство. Линии представляют путь, который я рисую, чтобы лучше представить длину пути. S0, S1, S2 и S3 - точки на графике, а A, B и C - средние точки. –
Тогда зачем их создавать, в вашем примере кратчайшее расстояние между S0 и S2 является прямой линией между ними. Зачем беспокоиться о средних очках? (кратчайшее расстояние без A, B и C от корня до S0 и S3 составляет 2 мм при допущении на 90 градусов). –