Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.74 KB | None | 0 0
  1. \documentclass{article}
  2. \usepackage[utf8]{inputenc}
  3. \usepackage{polski}
  4. \usepackage{mathtools}
  5. \usepackage{hyperref}
  6. \usepackage{marvosym}
  7. \usepackage{ amssymb }
  8. \usepackage{caption}
  9. \usepackage{indentfirst}
  10. \usepackage{enumerate}
  11. \usepackage{graphicx}
  12. \usepackage{float}
  13. \addtolength{\textwidth}{3cm}
  14. \addtolength{\hoffset}{-1.5cm}
  15. \addtolength{\textheight}{3cm}
  16. \addtolength{\voffset}{-1.5cm}
  17.  
  18.  
  19. \title{Projektowanie Algorytmów i Metody Sztucznej Inteligencji}
  20. \author{Robert Krzyżoś }
  21. \date{March 2019}
  22.  
  23.  
  24.  
  25. \begin{document}
  26.  
  27. \maketitle
  28.  
  29. \textbf{ Prowadzący: dr inż. Krzysztof Halawa}
  30. \textbf{ Zajęcia: wtorek 13}
  31.  
  32. \section{Wstęp}
  33. Celem projektu było samodzielne zaimplementowanie wybranych \mbox{algorytmów} sortujących oraz przeprowadzenie testów ich efektywności. Wybrane algorytmy to sortowanie: szybkie, introspektywne oraz przez scalenie.
  34.  
  35. Algorytmy sortowania są zazwyczaj klasyfikowane według:
  36. \begin{itemize}
  37. \item złożoności (pesymistyczna, oczekiwana) – zależność liczby wykonanych operacji w stosunku od liczebności sortowanego zbioru
  38. \item złożoności pamięciowej
  39. \item sposobu działania - tj. sposobu za pomocą którego algorytm uporządkuję naszą strukturę danych
  40. \item stabilności - elementy o równej wartości będą występowały, po posortowaniu, w takiej samej kolejności jaką miały w zbiorze nieposortowanym
  41.  
  42. \end{itemize}
  43. Wszystkie wybrane algorytmy posiadają logarytmiczną złożoność obliczeniową. Wyjątkiem jest pesymistyczny przypadek quicksorta
  44. \begin{math}
  45. \Omega(n^{2}).
  46. \end{math}
  47. Dwa spośród nich to algorytmy niestabilne tj. quicksort oraz introsort, mergesort należy natomiast do sortowań stabilnych.\\
  48. \indent Testy efektywności polegały na przeprowadzeniu eksperymentów dla 100 tablic o kolejnych rozmiarach: 10000, 50000, 100000, 500000 oraz 1000000 o różnych stopniach uporządkowania: 25\%, 50\%, 75\%, 95\%, 99\%, 99,7\% oraz o wszystkich elementach uporządkowanych, ale w odwrotnej kolejności.
  49.  
  50. \section{Sortowanie szybkie}
  51. Sortowanie szybkie to jeden z najpopularniejszych algorytmów sortowania, oparty o zasadę dziel i zwyciężaj. Sortowanie to zostało wynalezione w 1962 przez C.A.R. Hoare'a. Jak już wcześniej zostało wspomniane zalicza się on do algorytmów niestabilnych. Średnia żłożoność obliczeniowa wynosi:
  52. \begin{math}
  53. O(nlogn).
  54. \end{math}
  55. Ze względu na szybkość i prostotę implementacji jest powszechnie używany. Sortowania to jest algorytmem rekurencyjnymm. W każdym wywołaniu wybierany jest element rozdzielający tzw. pivot po czym tablica jest dzielona na dwa fragmenty: do początkowego przenoszone są wszystkie elementy nie większe od rozdzielającego, do końcowego wszystkie większe. Rekursja kończy się, gdy kolejny fragment uzyskany z podziału zawiera pojedynczy element, który nie wymaga dalszego sortowania. W przypadku gdy w miejsce pivota za każdym razem wybrany zostaje element największy lub najmniejszy mamy doczynienia z najgorszym przypadkiem algorytmu quicksort. Jego złożoność obliczeniowa wynosi
  56. \begin{math}
  57. O(n^{2})
  58. \end{math}
  59. \newpage
  60. \begin{figure}[th]
  61. \centering
  62. \includegraphics[width=0.75\textwidth]{szybkieTabela.png}
  63. \caption{Tabela z pomiarami czasów sortowań, w zależności od liczby elementów w tablicy oraz stopnia uporządkowania dla sortowania szybkiego.}
  64. \label{tabSzyb}
  65. \end{figure}
  66.  
  67. \begin{figure}[h]
  68. \centering
  69. \includegraphics[width=0.75\textwidth]{SzybkieWykres.png}
  70. \caption{Wykres przedstawiający graficznie dane z tabeli 1.}
  71. \label{wykSzyb}
  72. \end{figure}
  73.  
  74. \newpage
  75. \section{Sortowanie introspektywne}
  76. Sortowanie introspektywne to sortowanie hybrydowe mające na celu wyeliminowanie najgorszego przypadku quicksorta. W algorytmie tym występują sortowania: przez kopcowanie, przez wstawienie oraz sortowanie szybkie. Pomysł sortowania hybrydowego opiera się na spostrzeżeniu, że ogromna liczba rekurencyjnych wywołań algorytmu quicksort jest realizowana dla małych tablic, które są bardzo czasochłonne i zajmują miejsce na stosie. Rozwiązaniem problemu złożoności obliczeniowej
  77. \begin{math}
  78. O(n^{2})
  79. \end{math}
  80. w najgorszym przypadku jest badanie głębokości rekurencji. Maksymalna dopuszczalna głębokość wyznaczona jest na podstawie wzoru:
  81. \begin{math}
  82. M=2*log_{2}n
  83. \end{math}
  84. Jeżeli wartość parametru M wynosi 0, wywołania rekurencyjne są kończone i dla podproblemu, którym obecnie się zajmujemy, wywoływana jest procedura Sortowania Przez Kopcowanie, które jest traktowane jako sortowanie pomocnicze. W celu usprawnienia działania sortowanie szybkiego po zakończeniu rekurencyjnych wywołań procedury quicksort tablica podzielona jest na szereg małych podzbiorów o rozmiarze nie większym niż 9. Nastęnie wywołuje się procedure sortowania przez wstawienie, której zadaniem jest uporządkowanie podtablicy do końca. Sortowanie Przez Wstawianie jest elementarnym algorytmem sortowania, ale posiada liniową złożoność obliczeniową dla uporządkowanych tablic danych.
  85.  
  86. \begin{figure}[h]
  87. \centering
  88. \includegraphics[width=0.8\textwidth]{introspektywneTabela.png}
  89. \caption{Tabela z pomiarami czasów sortowań, w zależności od liczby elementów w tablicy oraz stopnia uporządkowania dla sortowania introspektywnego.}
  90. \label{tabIntro}
  91. \end{figure}
  92. \newpage
  93. \begin{figure}[h]
  94. \centering
  95. \includegraphics[width=0.7\textwidth]{sortowanieIntrospektywne.png}
  96. \caption{Wykres przedstawiający graficznie dane z tabeli 2.}
  97. \label{wykIntro}
  98. \end{figure}
  99.  
  100. \section{Sortowanie przez scalenie}
  101. Rekurencyjny algorytm sortowania podobnie jak quicksort wykorzystujący metodę dziel i zwyciężaj. Procedura dzieli zestaw danych na dwie części do momentu uzyskania tablic jednoelementowych. Następnie podtablice są porównywane oraz scalane układający elementy w zadanej kolejności. Złożoność obliczeniowa tego algorytmu wynosi:
  102. \begin{math}
  103. O(nlogn),
  104. \end{math}
  105. a w najgorszym przypadku wzrasta jedynie ilość potrzebnych porównań podczas scalania danej tablicy.
  106. \begin{figure}[h]
  107. \centering
  108. \includegraphics[width=0.7\textwidth]{scalanieTabela.png}
  109. \caption{Tabela z pomiarami czasów sortowań, w zależności od liczby elementów w tablicy oraz stopnia uporządkowania dla sortowania przez scalanie.}
  110. \label{tabScal}
  111. \end{figure}
  112.  
  113. \newpage
  114. \begin{figure}[th]
  115. \centering
  116. \includegraphics[width=0.8\textwidth]{mergeWykres.png}
  117. \caption{Wykres przedstawiający graficznie dane z tabeli 3.}
  118. \label{wykScal}
  119. \end{figure}
  120.  
  121. \begin{figure}[h]
  122. \centering
  123. \includegraphics[width=0.8\textwidth]{porownanie.png}
  124. \caption{Wykres przedstawiający porównanie 3 algorytmów dla losowej tablicy 1000000 elementów}
  125. \label{por}
  126. \end{figure}
  127.  
  128. \newpage
  129. \section{Wnioski}
  130.  
  131.  
  132. \end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement