dgwuqtj, спасибо за контр-пример! То есть, результат сильно зависит от взаимного расположения точек, и для произвольного расположения в худшем случае может потребоваться прочитать почти всю последовательность троек.
А что, если на расстояния
l между точками наложены ограничения? Что-то в духе
![$$c_1\sqrt[D]{N}\le l_{ij}\le c_2\sqrt[D]{N}$$ $$c_1\sqrt[D]{N}\le l_{ij}\le c_2\sqrt[D]{N}$$](https://dxdy-01.korotkov.co.uk/f/c/0/6/c064812515f6c0c22642f4914484101a82.png)
Вообще, опять же, у меня пространства компактные:
D-сфера

или
D-тор
![$\mathbb{T}^D=[0,\;1]^D$ $\mathbb{T}^D=[0,\;1]^D$](https://dxdy-01.korotkov.co.uk/f/0/5/7/057caed05de6f2b9038caf2ce5b9af6a82.png)
, и точки заполняют их в некотором смысле равномерно, во всяком случае нижняя и верхняя границы на расстояния между ними присутствуют.
Я так понимаю, для каждой точки из последовательности троек нужно извлечь как минимум
D расстояний до любой другой точки (если забыть на время, про то, что точки могут лежать на одной прямой, в одной плоскости и так далее). Как только последнее такое расстояние извлечено, то взаимное расположение точек определяется однозначно. Тут у меня, правда, загвоздка: для каждой точки по крайней мере
D+1 (возможно больше) наименьших расстояний все равны между собой и, соответственно, равны нижней границе. Поэтому гарантированно потребуется больше, чем (
D+1)
N извлечений из последовательности. Я поэтому задумался: можно ли обойтись удвоенной или утроенной величиной? Или я что-нибудь путаю?