Obraz-slownik

Zasada dziel i zwyciężaj (ang. divide and conquer principle)


Strona główna

Ważne definicje: Algorytmy sortowania:

Porównanie algorytmów

Instrukcja użytkownika

Informacja o programie

Do góry Do tyłu

Metoda projektowania algorytmów. Polega na podziale problemu na mniejsze problemy, które na ogół są tym samym problemem, ale dla danych o mniejszych rozmiarach, i przezwyciężeniu go w ten sposób. Niewielkie powiązania między podproblemami powodują, że łatwo jest złożyć rozwiązania podproblemów w rozwiązanie problemu.

Przykładem takiego podejścia jest np. algorytm porządkowania, w którym na każdym kroku ciąg jest dzielony na dwie części, elementy w tych częściach są porządkowane, a następnie już uporządkowane części są łączone w jedną uporządkowaną całość. Taki charakter mają sortowanie przez scalanie i szybkie sortowanie.

Szczególnym przypadkiem tej metody jest strategia, w której na każdym kroku rozwiązywania problemu jest on dzielony na co najmniej dwie części i do dalszych obliczeń pozostaje tylko jedna z nich. Przykładem takiego działania jest poszukiwanie elementu (lub miejsca dla niego) w ciągu uporządkowanym – jest to tzw. poszukiwanie przez połowienie, często stosowane w słownikach i encyklopediach.

Algorytmy oparte na tej zasadzie charakteryzują się często bardzo dobrą, czyli niską złożonością obliczeniową – stąd właśnie owo zwycięstwo w nazwie tej metody.

Według zasady "dziel-i-zwyciężaj" są często budowane algorytmy rekurencyjne.

Tej zasady nie należy mylić ze starożytną maksymą łacińską divide et impera (pol. dziel-i-rządź), która również zaleca dzielenie "substancji", nad którą należy zapanować, ale w tym podziale im gorsza jest komunikacja między wydzielonymi częściami, tym lepiej.

Literatura
  • Sysło M.M., Algorytmy, WSiP, Warszawa 1997, 2002.
  • Sysło M.M., Piramidy, szyszki i inne konstrukcje algorytmiczne, WSiP, Warszawa 1998.
  • http://www.wsip.com.pl/algorytmika/ - strona poświęcona algorytmice
Źródło Szkolny Leksykon Informatyczny

Strona główna Sortowanie bąbelkowe Sortowanie przez wstawianie Sortowanie przez binarne wstawianie Sortowanie przez wybór Sortowanie przez scalanie Sortowanie przez scalanie - rozszerzone Sortowanie szybkie Sortowanie stogowe Sortowanie stogowe rozszerzone Porównanie algorytmów