Minimalna ścieżka z unikaniem przeszkód

0

Na płaszczyźnie dany jest zbiór prostokątów współosiowych (przeszkód) (prostokąty współosiowe są równoległe do jakiejś prostej). Chcemy możliwie efektywnie wyznaczać ścieżki łączące zadane pary punktów i nie kolidujące z prostokątami. Kryteria jakości dotyczące ścieżek to długość i liczba załamań. Jakieś pomysły?

Starałem się wykorzystać metodę zamiatania powierzchni ale nie wiem co dokładnie mam w niej sprawdzać/zapamiętywać...

0

A nie wystarczy Dijkstra z założeniem że waga "prostej" ścieżki jest np. 1 a waga załamanej 2?

0
  1. Wypisujesz wszystkie x (rogi prostokątów oraz punkty startowy i docelowy) , usuwasz duplikaty, sortujesz je, dokładnie pomiędzy każdą sąsiednia parą wstawiasz dodatkowy.
  2. To samo powtarzasz dla y.
  3. Tworzysz siatkę z x,y z powyższych dwóch list która staje się węzłami grafu.
  4. Łączysz sąsiednie punkty, w pionie i w poziomie
  5. Usuwasz punkty który się znalazły wewnątrz przeszkód
  6. Odpalasz BFS.

Jeżeli chcesz "chodzić" również po przekątnej to trzeba podkorygować algorytm.

0

_13th_Dragon mozesz troche rozpisac swoj pomysl zeby troche rozjasnic??

0

Co rozumiesz przez "worzysz siatkę z x,y z powyższych dwóch list która staje się węzłami grafu."? Że element z najmniejszym x łączę z elementem o najmniejszym y?

0

czy dany x z kazdym y?

0

Masz listę X oraz listę Y. Listę punktów tworzysz na zasadzie każdy x z każdym y

0

"dokładnie pomiędzy każdą sąsiednia parą wstawiasz dodatkowy" - pomiędzy już posortowane punkty?

0

W jakim celu te punkty połówkowe? A co jeśli wstawi 2 punkty pomiędzy?

0

Zrób z połówkowaniem, jak program będzie gotów to zakomentujesz ten jeden wiersz i zobaczysz różnicę, za długo opisywać.
Możesz nawet 100 wsadzić ale złożoność wzrasta kwadratowo.

0

Nie tworzą się wtedy schodki?

1 użytkowników online, w tym zalogowanych: 0, gości: 1