| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Pasсal] Двумерный массив |
| Автор: Mitya 9.3.2007, 16:18 |
| Массив KOORD[1..2,1..n] представляет собой координаты N точек на плоскости: 1-я строка - абсциссы, 2-я строка - ординаты. Найти номера двух точек, расстояние между которыми максимально. X 1 3 4 2 4 Y 2 3 5 4 1 В данном случае N=5 Всем огромное спасибо! |
| Автор: Strannik 9.3.2007, 19:57 |
| Алгоритм тупой (O(N^2)) или умный (O(NlogN)) нужен? |
| Автор: Mitya 9.3.2007, 21:25 |
А циклом for нельзя? Просто я еще учусь, а такого даже не знаю... там я написал for i:=1 to 2 do for j:=1 to n do begin А вот дальше - ступор... |
| Автор: Kuvaldis 9.3.2007, 21:57 | ||
|
| Автор: FireSnake 9.3.2007, 22:43 |
| Эт ж что за умный сложностью NlogN? Поделиси соображениями. |
| Автор: Strannik 10.3.2007, 12:09 |
| RTFM(кормен). А если честно - я его сам не знаю... Но в кормене в разделе "Вычислительная геометрия" он точно есть. |
| Автор: MBo 10.3.2007, 12:39 |
| Для нахождения пары с максимальным расстоянием за NLogN можно построить выпуклую оболочку (Convex Hull, есть метод с асимптотикой O(Nh), где h - число точек в оболочке, на практике методы обычно близки по скорости, если распределение точек не специально хитрое), наиболее удаленные точки будут ей принадлежать Кроме того, есть методы с делением облака точек на клетки. Если клеток достаточно много, то достаточно проверять расстояния до небольшого количества дальних клеток |
| Автор: Strannik 10.3.2007, 13:42 | ||
А если все точки входят в выпуклую оболочку? Если я правильно понял - тогда всё равно квадрат выйдет... В кормене алгоритм типа "разделяй и властвуй"... надо будет разобратся... |
| Автор: FireSnake 10.3.2007, 21:40 | ||
Странник прав, оболочка строится за квадрат.
Кормен это точно FM:) |
| Автор: MBo 10.3.2007, 23:09 |
| Strannik, >А если все точки входят в выпуклую оболочку? Если я правильно понял - тогда всё равно квадрат выйдет... Выпуклая оболочка строится за O(NLogN), например, по Грэхему. Асимптотика в его методе не зависит от количества точек в оболочке, а обусловлена сортировкой Расстояние между наиболее удаленными точками на ней находится за линейное время (Rotating Calipers) FireSnake, >оболочка строится за квадрат. Можно и за экспоненциальное время, но незачем, если есть методы с гарантированным NLogN |
| Автор: Strannik 12.3.2007, 14:44 | ||||||
Это так, я не то имел ввиду...
Об этом по подробнее можно? Добавлено @ 14:48
Я имел ввиду поиск двух наиболее удалённых... |
| Автор: MBo 12.3.2007, 15:31 |
| >Об этом по подробнее можно? гуглом много находится. Вот одна из первых ссылок http://cgm.cs.mcgill.ca/~orm/rotcal.frame.html |
| Автор: Mitya 14.3.2007, 15:23 |
| Огромное спасибо всем, кто помог и помогает людям!!! Низкий всем Вам поклон! |