Diferente pentru notiuni-de-geometrie-si-aplicatii intre reviziile #63 si #62

Nu exista diferente intre titluri.

Diferente intre continut:

O rezolvare mai eficienta porneste de la observatia ca perechea cautata se afla in mod evident pe infasuratoarea convexa a punctelor. Vom incepe prin a fixa un punct oarecare pe infasuratoare si vom parcurge restul punctelor de pe infasuratoare in oricare sens (trigonometric sau orar). Distanta intre punctul fixat si punctul la care am ajuns in parcugere va creste pana la un moment dat si apoi va incepe sa scada. Retinem punctul aflat la distanta maxima fata de cel fixat. Vom avea acum perechea de puncte $X$ (punctul fixat initial), $Y$ (cel mai departat punct de acesta) care este o posibila solutie.
Apoi vom pleca de la $X$ si vom continua sa parcurgem restul punctelor de pe infasuratoare in sensul ales initial. Pentru fiecare punct din aceasta parcurgere, vom incerca sa gasim punctul de pe infasuratoare pentru care se obtine o distanta maxima. Daca am reface algoritmul folosit pentru $X$ am obtine o complexitate de {$O(N^2^)$} ceea ce este ineficient. Ca sa reducem complexitatea, notam punctul la care am ajuns in parcurgere cu $A$, si observam ca pentru oricare punct dintre $A$ si $Y$ in sensul ales, distanta intre acesta si $A$ va fi mai mica decat distanta dintre $X$ si $Y$, asadar nu poate fi o solutie. Astfel, pentru fiecare punct $A$, parcurgem punctele incepand cu punctul $Y$ in sensul ales pana cand distanta dintre $A$ si punctul la care am ajuns va incepe sa scada. Pastram distanta maxima, inlocuim perechea $X$, $Y$ cu perechea $A$, cel mai departat punct de el, verificam daca este mai buna decat solutia obtinuta pana acum si apoi trecem la urmatorul punct $A$.
Apoi vom pleca de la $X$ si vom continua sa parcurgem restul punctelor de pe infasuratoare in sensul ales initial. Pentru fiecare punct din aceasta parcurgere, vom incerca sa gasim punctul de pe infasuratoare pentru care se obtine o distanta maxima. Daca am reface algoritmul folosit pentru $X$ am obtine o complexitate de {$O(N^2^)$} ceea ce este ineficient. Ca sa reducem complexitatea, notam punctul la care am ajuns in parcurgere cu $A$, si observam ca pentru oricare punct dintre $A$ si $Y$ in sensul ales, distanta intre acesta si $A$ va fi mai mica decat distanta dintre $X$ si $Y$, asadar nu poate fi o solutie. Astfel, pentru fiecare punct $A$, parcurgem punctele incepand cu punctul $Y$ in sensul ales pana cand distanta dintre $A$ si punctul la care am ajuns va incepe sa scada. Pastram distanta maxima, verificam daca este mai buna decat solutia obtinuta pana acum si apoi trecem la urmatorul punct $A$.
Complexitatea acestei solutii este de {$O(N*log N)$} pentru infasuratoare si {$O(N)$} pentru aflarea celor mai departate 2 puncte asadar {$O(N*log N)$}.

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.