{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "# Was bringen die Optimierungen und was die Wahl des Algorithmus?\n", "\n", "In den vorangegangenen Modulen haben Sie sich mit Optimierungen auseinandergesetzt. Sie haben gesehen, dass nicht jeder Algorithmus in jeder Situation geeignet ist und dass auch ein vermeintlich langsamer Sortieralgorithmus wie Insertion oder Bubble Sort bei einer fast sortierten Liste eine gute Wahl sein kann – besser sogar als Merge Sort.\n", "\n", "Dieses Notebook soll Ihnen zeigen, wieviel Sie eigentlich gewinnen. \n", "\n", "* Wie viel gewinnen Sie, wenn Sie Bubble Sort optimieren?\n", "* Und wie viel schneller ist Merge Sort?\n", "\n", "Hier werden Sie graphisch sehen, wie gross der Unterschied zwischen der Bruteforce-Umsetzung und den Optimierungen von Bubble Sort ist und wie viel schneller Merge Sort (in der Regel) ist.\n", "\n", "Sie müssen hier nicht selbst aktiv werden, aber Sie können auch die Anzahl Elemente verändern und damit beobachten, wie sich die Optimierung oder der Algorithmus mit der Zeit auswirkt. Dazu können Sie jeweils den Wert der Variable `anzahl_elemente` anpassen.\n", "\n", "Sehen Sie sich auch den [Vergleich der berühmtesten Sortieralgorithmen auf Toptal](https://www.toptal.com/developers/sorting-algorithms) an." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "## Bubble Sort\n", "\n", "Hier wird die Anzahl Vergleiche dargestellt. \n", "\n", "Formal ausgedrückt kommen Sie mit den Lösungen des Notebooks Bubblesort-Loesungen.ipynb auf die folgenden Formeln für die Anzahl Vergleiche:\n", "\n", "* Brute Force (also ohne Optimierungen): $laenge^2-laenge$\n", "* Erste Optimierung (einsortierte Elemente werden nicht mehr berücksichtigt): $\\frac{laenge^2-laenge}{2}$\n", "* Zweite Optimierung (abbrechen, sobald in einem Durchgang keine Tausche mehr nötig waren): im besten Fall: $laenge$" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "anzahl_elemente = 1000\n", "laenge = np.arange(1, anzahl_elemente + 1, 1)\n", "\n", "# Bubble Sort ohne Optimierung: \n", "bubble_brute_force = laenge**2 - laenge\n", "plt.plot(laenge, bubble_brute_force, label='Brute Force')\n", "plt.legend()\n", "\n", "# Bubble Sort mit Optimierung 1: \n", "bubble_opt = (laenge**2 - laenge) / 2\n", "plt.plot(laenge, bubble_opt, label='1. Optimierung')\n", "\n", "# Bubble Sort im allerbesten Fall:\n", "# (zweite Optimierung, Spezialfall: bereits sortierte Liste)\n", "bubble_opt_ideal = laenge\n", "plt.plot(laenge, bubble_opt_ideal, label='2. Optimierung (Idealfall)')\n", "plt.legend()\n", "\n", "plt.title(\"Bubble Sort: Anzahl Vergleiche\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Merge Sort\n", "\n", "### Aufteilen: $\\log_{2}(laenge)$\n", "\n", "\n", "Ausgehend von der Definition des Logarithmus kommen Sie auf die folgende Anzahl «Aufteilungen» («Splits»): \n", "\n", "$b^{y}=x \\Leftrightarrow y = \\log_{b}(x)$\n", "\n", "- $b$: Basis, hier: 2\n", "- $x$: Länge des Arrays\n", "- $y$: Anzahl der «Aufteilungen» («Splits»)\n", "\n", "$2^{splits}=laenge \\Leftrightarrow splits = \\log_{2}(laenge)$" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "anzahl_elemente = 100000\n", "laenge = np.arange(1, anzahl_elemente + 1, 1)\n", "\n", "# Aufteilen:\n", "splits = np.log2(laenge)\n", "plt.plot(laenge, splits)\n", "\n", "plt.title(\"Splits (Aufteilungen)\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Zusammensetzen\n", "\n", "Nun müssen die Teile zusammengesetzt werden" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "anzahl_elemente = 1000\n", "\n", "laenge = np.arange(1, anzahl_elemente + 1, 1)\n", "splits = np.log2(laenge)\n", "\n", "# Aufteilen und zusammensetzen: \n", "plt.plot(laenge, laenge*splits)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Direktvergleich Bubble- und Merge Sort\n", "\n", "Hier reichen Ihnen bereits zehn Elemente, um einen grossen Unterschied zu sehen. \n", "\n", "Obwohl Sie Bubble Sort um die Hälfte halbieren konnten, ist Merge Sort schneller.\n", "\n", "Wenn Sie aber Merge Sort auf eine bereits sortierte Liste anwenden, ist Bubble Sort noch schneller als Merge Sort, sofern Sie erkennen, wenn die Liste sortiert ist. Dieser Spezialfall wird hier für den Vergleich ebenfalls dargestellt." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "anzahl_elemente = 100\n", "laenge = np.arange(1, anzahl_elemente + 1, 1)\n", "\n", "# Bubble Sort (ohne Optimierung)\n", "bubble_brute_force = laenge**2 - laenge\n", "plt.plot(laenge, bubble_brute_force, label='Bubble Sort Brute Force')\n", "\n", "# Bubble Sort (mit Optimierung)\n", "bubble_opt = (laenge**2 - laenge) / 2\n", "plt.plot(laenge, bubble_opt, label='Bubble 1. Optimierung')\n", "\n", "# Bubble Sort im allerbesten Fall:\n", "# (zweite Optimierung, Spezialfall: bereits sortierte Liste)\n", "bubble_opt = (laenge-1)\n", "plt.plot(laenge, bubble_opt, label='Bubble 2. Optimierung (Idealfall)')\n", "\n", "# Merge Sort\n", "splits = np.log2(laenge)\n", "# Die Splits könnten Sie auch plotten; Der Graph würde der binären Suche entsprechen\n", "# plt.plot(laenge, splits, label='Splits')\n", "plt.plot(laenge, laenge * splits, label='Merge Sort')\n", "\n", "plt.title(\"Vergleich\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" } }, "nbformat": 4, "nbformat_minor": 4 }