Poszukiwanie najmniejszej i największej wartości w zbiorze

przygotowała Magdalena Tyde

Co to jest zbiór?

​Nie martw się jeśli nie potrafisz odpowiedzieć. 

Jest to pojęcie pierwotne teorii mnogości Georga Cantora i leżące u podstaw całej matematyki.

Intuicyjnie jest to nieuporządkowany zestaw różnych obiektów. 

Elementami zbioru mogą to być liczby, ale również rzeczy czy ludzie.

Poszukiwanie najmniejszej i największej wartości w zbiorze

Znalezienie najmniejszego i największego elementu w zbiorze pozwala na określenie tzw.  rozpiętości zbioru, czyli różnicy pomiędzy najmniejszą, a największą wartością elementów występujących w danym zbiorze.

Zastosowanie funkcji w algorytmach iteracyjnych

Algorytm wyboru minimum z n liczb.

Algorytm znajdowania minimum (lub maksimum) ma zastosowanie w rozwiązaniach różnych zadań, nie tylko matematycznych - np. przy wyborze najniższej ceny wśród cen tych samych produktów, przy wyborze zawodnika, który uzyskał najwyższą liczbę punktów, lub ucznia, który uzyskał najwyższą średnią ocen.

Zastosowanie funkcji w algorytmach iteracyjnych

Algorytm wyboru minimum z n liczb.

Z algorytmu wyboru minimum (lub maksimum) korzysta się również w innych algorytmach, np. w algorytmach sortowania. Jeśli wiemy jak znaleźć element najmniejszy to łatwo uporządkować elementy od najmniejszego do największego. Szukanie elementu najmniejszego to typowy algorytm iteracyjny - powtarzają się w nim operacje porównywania i podstawiania. 

Zastosowanie funkcji w algorytmach iteracyjnych

Algorytm wyboru minimum z n liczb.

Algorytm znajdowania elementu najmniejszego. Wskazujemy dowolny element np. pierwszy, jako najmniejszy i porównujemy go z drugim elementem. Jeśli drugi element okaże się mniejszy to on zaczyna być traktowany jako minimum. Następnie porównujemy element aktualnie najmniejszy z trzecim elementem itd. - aż do końca ciągu elementów.

Zastosowanie funkcji w algorytmach iteracyjnych

Algorytm wyboru minimum z n liczb.

Przykład: Stosowanie algorytmu wyboru najmniejszego elementu z n liczb.

Zadanie: Wybierz najmniejszą liczbę wśród n liczb.

Dane: Liczba naturalna n, oznaczająca ilość wprowadzanych liczb, n dowolnych liczb rzeczywistych, zapamiętywanych kolejna w zmiennej x.

Wynik: Wartość elementu najmniejszego min. 

 

Zastosowanie funkcji w algorytmach iteracyjnych

Algorytm wyboru minimum z n liczb.

Przykład: Stosowanie algorytmu wyboru najmniejszego elementu z n liczb.

Lista kroków:

  1. Zacznij algorytm.
  2. Wprowadź liczbę danych n: n.
  3. Wprowadź pierwszą liczbę x: x.
  4. Zmiennej min przypisz wartość x: min:= x.
  5. Wprowadź kolejną liczbę x.
  6. Porównaj kolejną liczbę z min: x < min.
  7. Jeśli kolejna liczba x jest mniejsza od min, przypisz jej wartość zmiennej min: min := x.
  8. Jeśli nie jest to ostatnia liczba, wróć do kroku 5.
  9. Wyprowadź wynik: min. 
  10. Zakończ algorytm.

Zastosowanie funkcji w algorytmach iteracyjnych

Algorytm wyboru minimum z n liczb.

Przykład: Definicja funkcji znajdowania minimum.

Zapisując algorytm znajdowania minimum w postaci programu, zdefiniujemy funkcję MinN z jednym parametrem n (n - liczba elementów ). Funkcja będzie zwracać wartość elementu najmniejszego.

Funkcja wywołana jest w programie głównym w instrukcji podstawienia. 

Pascal    MinWartosc := MinN(LiczbaElementow);

C++         MinWartosc = MinN(LiczbaElementow); 

Zastosowanie funkcji w algorytmach iteracyjnych

Algorytm wyboru minimum z n liczb.

Przykład: Definicja funkcji znajdowania minimum.

 

Zastosowanie funkcji w algorytmach iteracyjnych

Algorytm wyboru minimum z n liczb.

Przykład: Definicja funkcji znajdowania minimum.

 

Jednoczesne znajdowanie największego i najmniejszego elementu w zbiorze

Algorytm naiwny

Algorytm naiwny szukania elementu najmniejszego i największego w zbiorze składającym się z n elementów polega na zastosowaniu algorytmu szukania minimum dla n elementów, usunięcia elementu najmniejszego ze zbioru, a następnie zastosowania algorytmu szukania maksimum dla zbioru składającego się z n-1 elementów (czyli pomniejszonego o element najmniejszy)

Jednoczesne znajdowanie największego i najmniejszego elementu w zbiorze

Algorytm optymalny - metoda "dziel i zwyciężaj"

Optymalnym algorytmem jednoczesnego znajdowania elementu najmniejszego i największego jest zastosowanie metody "dziel i zwyciężaj". Nazwa metody pochodzi od angielskiego sformułowania devide and conquer  (parafraza słynnej łacińskiej formuły politycznej divide et impera - dziel i rządź)

Jednoczesne znajdowanie największego i najmniejszego elementu w zbiorze

Algorytm optymalny - metoda "dziel i zwyciężaj"

"Dziel" oznacza podział zadania na mniejsze części , a "zwyciężaj" - znalezienie rozwiązania (osiągnięcie sukcesu) w każdej z nich oddzielnie. Zastosowanie tej metody pokażę na przykładzie algorytmu jednoczesnego szukania najmniejszego i największego elementu zbioru.

Jednoczesne znajdowanie największego i najmniejszego elementu w zbiorze

Algorytm optymalny - metoda "dziel i zwyciężaj"

Zbiór dzielimy na dwa podzbiory w sposób następujący

porównujemy parami liczby - pierwszą z drugą, trzecią z czwartą itd. Liczby mniejsze zapisujemy w jednym podzbiorze, a większe w drugim. W pierwszym podzbiorze, korzystając z algorytmu znalezienia minimum, znajdujemy element najmniejszy. W drugim podzbiorze korzystając z algorytmu na znalezienie maksimum, znajdujemy element największy.

Jednoczesne znajdowanie największego i najmniejszego elementu w zbiorze

Algorytm optymalny - metoda "dziel i zwyciężaj"

Na poniższym rysunku został przedstawiony przypadek, gdy liczba elementów zbioru jest parzysta (dzieli się przez 2). W przypadku nieparzystej liczby elementów pozostanie wolny. Zapamiętuje się go w zmiennej pomocniczej i na koniec porównuje z najmniejszym i największym znalezionym elementem. W szczególnym przypadku to właśnie ten element może być minimalny (bądź maksymalny).

Jednoczesne znajdowanie największego i najmniejszego elementu w zbiorze

Algorytm optymalny - metoda "dziel i zwyciężaj"

 

Jednoczesne znajdowanie największego i najmniejszego elementu w zbiorze

Algorytm optymalny - metoda "dziel i zwyciężaj", a

Algorytm naiwny

W algorytmie naiwnym wykonywanych jest n-1 porównań podczas znajdowania minimum i n-2 porównań przy znajdowaniu maksimum, czyli razem wykonywana jest poniższa liczba porównań:

n - 1 + n - 2 = 2n - 3 

 

Jednoczesne znajdowanie największego i najmniejszego elementu w zbiorze

Algorytm optymalny - metoda "dziel i zwyciężaj", a

Algorytm naiwny

W metodzie "dziel i zwyciężaj" (w przypadku parzystej liczby elementów) wykonujemy najpierw n/2 porównań, aby podzielić zbiór na dwie części. W każdej części składającej się z n/2 elementów wykonujemy (n/2) - 1 porównań, czyli razem 

(n/2) + ((n/2) -1) + (n/2)-1) = (3n/2) - 2

Jednoczesne znajdowanie największego i najmniejszego elementu w zbiorze

Algorytm optymalny - metoda "dziel i zwyciężaj", a

Algorytm naiwny

Stosując metodę "dziel i zwyciężaj", wykonujemy mniejszą liczbę porównań niż w algorytmie naiwnym. Na przykład dla zbioru składającego się ze 100 elementów, stosując metodę "dziel i zwyciężaj", wykonujemy 148 porównań, a w algorytmie naiwnym 197

Poszukiwanie najmniejszej i największej wartości w zbiorze

By mtyde

Poszukiwanie najmniejszej i największej wartości w zbiorze

  • 1,327