Предположим, я дам вам неориентированный граф с взвешенными ребрами и скажу, что каждый узел соответствует точке в трехмерном пространстве. Всякий раз, когда между двумя узлами есть ребро, вес ребра - это расстояние между точками.
Ваша цель - восстановить относительные положения точек, учитывая только доступные расстояния (представленные весами ребер). Например, если бы я дал вам тогда вы знаете, что точки - это вершины тетраэдра. Вы не знаете, где он находится относительно источника, его ориентации или зеркального отражения, но вы можете сказать, что это тетраэдр.
В общем, проблема проста, если я дам вам все длины ребер. Просто произвольно выберите точку которая будет в , затем выберите соседнюю точку и поместите ее в , тогда общий сосед триангулируется на XY плоскости, то конечный общий сосед триангулируется в полупространство и нарушает оставшуюся симметрию (при условии, что вы не выбрали вырожденные точки). Вы можете использовать эти четыре точки для триангуляции всех оставшихся. ( 0 , 0 , 0 ) p 1 ( d 0 , 1 , 0 , 0 ) p 2 p 3 z > 0
С другой стороны, когда некоторые длины ребер отсутствуют, может оказаться невозможным восстановить вложение. Например, если есть вершина, которая отключает график при вырезании, то два компонента, которые он разделит, если удалить, могут вращаться относительно друг друга.
Что вызывает вопросы:
- Насколько дорого найти решение?
- Как вы определяете, является ли решение уникальным, вплоть до перевода / вращения / зеркального отображения? Достаточно ли 3-связности? Нужно?
- Какие условия делают проблему тривиальной?
- Если я не обещаю, что веса ребер на самом деле соответствуют расстоянию до точки sin 3d, насколько дорогой будет определить, возможно ли вложение вообще?