Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Близькість

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Нехай P1 — множина точок з S1, що лежать в смузі на віддалені xF064 від розділяючої прямої l, а P2 — аналогічна підмножина в S2. Спроеціювати P1 та P2 на l та впорядкувати проекції за y координатою. Нехай P1* та P2* — відповідні впорядковані послідовності. Злиття можна виконати, переглядаючи P1* і для кожної точки з P1* досліджувати точки з P2*, що знаходяться на відстані не більшій за xF064… Читати ще >

Близькість (реферат, курсова, диплом, контрольна)

Реферат на тему:

Близькість.

Задача. Найближча пара. На площині задано N точок. Знайти дві з них, відстань між якими найменша.

В одномірному випадку можна впорядкувати координати точок за час O (N * log N) а потім за лінійний час проглянути точки x1, x2, …, xN обчислюючи значення xi+1 — xi, i = 1, …, N-1.

Означення. Точа b є найближчим сусідом точки a множини S (позначається a xF0AExF020b), якщо.

dist (a, b) = min dist (a, c), c xF0CExF020S / a.

Відношення найближчий сусід на множині точок Задача. Єдиність елементів. Дано N дійсних чисел. Чи є серед них два рівних числа?

Теорема. Задача єдиність елементів лінійно зводиться до задачі найближча пара.

Доведення. Дано множину дійсних чисел {x1, x2, …, xN}. Розглядаємо їх як точки на прямій y = 0 та намагаємося знайти найближчу пару точок. Якщо відстань між найближчою парою точок не дорівнює нулю, то усі числа різні.

Задача. Найближчі сусіди. На площині задано N точок. Знайти найближчого сусіда для кожної точки множини.

Задача. Евклідове мінімальне остове дерево (ЕМОД). На площині задано N точок. Побудувати дерево, вершинами якого є всі задані точки і сумарна довжина всіх ребер якого мінімальна.

Теорема. Задача сортування за лінійний час зводиться до задачі ЕМОД.

Доведення. Розглянемо кожне число xi множини {x1, x2, …, xN} як точку (xi, 0) на площині та будуємо ЕМОД. В побудованому дереві вершини, які відповідають числам xi та xj, сполучені ребром тоді і тільки тоді, коли утворюють пару послідовних чисел у впорядкованій множині. Розв’язком задачі ЕМОД є список з N — 1 пар (i, j), кожна з яких визначає ребро дерева. Цей список можна впорядкувати за лінійний час.

Задача. Триангуляція. На площині задано N точок. Сполучити їх неперетинаючими відрізками так, щоб кожна область всередині опуклої оболонки цієї множини точок була трикутником.

Теорема. Задача сортування за лінійний час зводиться до задачі триангуляції.

Доведення. Розташуємо N-1 точку з множини {x1, x2, …, xN} на одній прямій, а одну точку не на прямій. Триангуляція множини точок може бути проведена єдиним чином:

Список ребер, що породжується алгоритмом триангуляції, можна використати для отримання впорядкованого списку чисел xi за час O (N).

Найближча пара Одномірний випадок. Алгоритм розділяй та пануй.

(.

x.

|.

~.

x20AC.

U.

Ue.

" .

(.

:

T.

V.

Z.

b.

d.

f.

h.

j.

r.

t.

x.

x.

z.

U.

Ue.

e.

i.

" .

P.

R.

n.

p.

r.

t.

x.

z.

|.

x0160.

x0152.

x017D.

'.

".

O.

U.

a.

що точки p3 та q3 повинні знаходитися на відстані, яка не перевищує xF064 від точки m).

Blpara (S, Begin, End).

if Begin = End then return MAXINT;

if (Begin — End) = 1 then return S[End] - S[Begin];

Mediana = (Begin + End) / 2;

ResS1 = blpara (Begin, Mediana);

ResS2 = blpara (Mediana + 1, End);

Delta = S[Mediana + 1] - S[Mediana ];

return min (ResS1, ResS2, Delta);

Двовимірний випадок. Алгоритм розділяй та пануй.

Розіб'ємо множину S на дві підмножини S1 та S2 так, щоб кожна точка S1 лежала лівіше довільної точки S2. Тобто множина точок розбивається на частини вертикальною прямою l, що визначається медіаною множини S по x координаті. Розв’язавши задачу для S1 та S2, отримаємо числа xF064xF031 та xF064xF032xF020- мінімальні відстані для множин S1 та S2 відповідно. Покладемо xF064 = min (xF064xF031, xF064xF032).

Якщо найближчу пару утворюють точки p xF0CExF020S1 та q xF0CExF020S2, то відстані від p та q до l не перевищують xF064. Позначимо через P1 та P2 дві вертикальні смуги шириною xF064, розташовані відповідно зліва та справа від l. Тоді p xF0CE P1 та q xF0CExF020P2. Ми повинні знайти всі точки q xF0CExF020P2, віддалені від p не більш ніж на xF064. Всі такі точки повинні знаходитися в прямокутнику R розміром xF064xF020xF0B4xF0202xF064. Відомо, що жодна пара точок в P2 не знаходиться на відстані, меншій за xF064. Максимальна кількість точок, яку можна розмістити в такому прямокутнику, дорівнює 6. Оже для кожної точки з P1 необхідно дослідити не більше шести точок з P2. На кроці злиття розв’язків підзадач необхідно виконати не більш ніж 6 * N/2 = 3N порівнянь.

1. Розбити S на дві підмножини S1 та S2 вертикальною прямою l, яка ділить множину S навпіл.

2. Рекурсивно знайти відстані для найближчих пар xF064xF031 та xF064xF032.

3. xF064 = min (xF064xF031, xF064xF032).

4. Нехай P1 — множина точок з S1, що лежать в смузі на віддалені xF064 від розділяючої прямої l, а P2 — аналогічна підмножина в S2. Спроеціювати P1 та P2 на l та впорядкувати проекції за y координатою. Нехай P1* та P2* - відповідні впорядковані послідовності.

5. Злиття можна виконати, переглядаючи P1* і для кожної точки з P1* досліджувати точки з P2*, що знаходяться на відстані не більшій за xF064. Нехай xF064l — найменша відстань між парою точок, знайдена в ході виконання процедури злиття.

6. xF064S = min (xF064, xF064l).

Теорема. Найкоротша відстань, яка визначається N точками на площині, може бути знайдена за час O (N * log N), який є оптимальним.

q3.

q2.

q1.

p3.

p2.

p1.

m.

xF064.

xF064.

xF064xF031.

PxF032.

l.

SxF032.

SxF031.

PxF031.

xF064xF032.

Показати весь текст
Заповнити форму поточною роботою