Zum Inhalt

Laufzeiten

Wie schnell ein Rechner ein bestimmtes Problem lösen kann, hängt von viele Faktoren ab. Zunächst wollen wir die Merkmale vom 'Speicher' untersuchen, sowie deren Einfluss auf die Laufzeit.

Lernziele
  • Ich erkenne, dass Arbeitsspeicher endlich ist und praktische Grenzen aufweist.
  • Ich kann mit Python die Zeit abfragen und Zeitintervalle messen.
  • Ich kann mit Python die effektive Rechenzeit von einem Programmabschnitt messen.
  • Ich kann die Auswirkung von der Nutzung des Arbeitsspeichers auf die Rechenzeit beschreiben.
  • Ich kann einfache Liniendiagramme mit Python und matplotlib erstellen.
  • Ich kann experimentell das effektive Wachstumsverhalten der Rechenzeiten von Addition und (naiver) Multiplikation bestimmen und beschreiben.

Grenzen vom Speicher

Wie viele Zahlen können wir wohl in einem Array speichern?

Question
  • Erstelle eine Variable vom Typ Array.
  • 'Fülle' das Array mit sehr vielen Zahlen
  • gibt es ein Maximum an Zahlen die gespeichert werden können? Falls ja, finde sie.

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

.128013 c2ZLz(o4xkgfö3e=)Ji6A78ü5*hy/;aputBEndwm:sR_l[r1],.qbv050N0q0J0G0u0U0R0b0c0U0G0R0R0r010J0u0H010406050R0I0P0P0G0W0D040f0o120M0m050E12141618100H04051m1f1p0E1m100N0u0%0:0=0@0_0C0u0m0C0U1D0C0J0~050+0$0U0q1y0?0^011C1E1G1E0J1M1O1K0J0W1n0J0C0:0i0.0H0G0M0_0d011Q1A010n0-0q0M0G0P0q1K0R1.0M1@1S1`1O1}1 0~0a0b1a1c0m0R0%0i0W0R0c1F0G1e1g231n0E1)2s1$1(1%1L0N250_1G0M1|0i0R1K1v1x0;1R2C0u2E0M0i2J1K0H0W0q1n221/2s2Y0M2X232B012Q0W150U0~0X1f2#0 112(2L1^2+2-0~0d2;2r102#2)2{0G2.040p2 2Z312^1z1S34360j392$3b1/332j2|040A3i2?322_3e3n350~0v3r3k243u0_3f0~0x3A2@3l3D2*3w360y3r1q2V2s2J2v0N1(2A3L0c2R201n3U1o3S3J2$3Q3!0)2%3K3d0_0c0X0~030b0t1P1}2m0b0S0q2m2E0W0b021~0H0F0b0K0W0i0O0R0q450O0z0W0)241 0C450e0G1F1|0b0g130b0w0$0R0J0I0W0g0b0n0z4p1|3I3t3=2*0~0M0T4r4t0M3r0b3+2)0i0~0r4V4X3L0P0u2}4$4M2M014Z040B0B4,3c4.4)2}3q2q3a3B330~0k4@3;4.4:4#4}2$4W4-1^0}040V0Y4L4^1^0l0~0n2j533C4N0M0~0u5o4Y0O5s4U58045a5i3e0$0~0W1/0m0q3Q5b1S5d0h5K5C3E4P4R4s285P545c0~0s0Q3A0b5%5B5X3e515W5p550~0!5-50040G0H0H1|0N5=3L5N5}5q5s604.5d0s3A4 3L0M5E042U2O0J635Y045O5z4%4N0R1=04020#0I0i0J0F0w0M0g5U0b0L1O1 0M0J0q0Q466r6t0F6g5M0~0Z5u696b5V6k5L0_5 6U5Q4O04526Y5*6W5Z665z100E3.2W3R6:0E3(2t3W1f2w6`0G1N6=3U6-0)0+0-0R04.

Zeitkosten für den Speicher

Wenn der Rechner seinen Speicher verwenden will, benötigt dies zusätzliche Zeit. Um ein ungefähres Bild davon zu erhalten, können wir ein paar Experimente durchführen, in dem wir die Laufzeit von einem Programm messen.

Summieren ohne Speicher

Question
  • Berechne die Summe von allen Zahlen zwischen 0 und 'n' ohne ein Array zu verwenden.
  • miss die dafür benötigte Zeit

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

.128013S c2ZLz(o4kDgfö3e=)i6785*hy/9;aputBnd0mw:-+s_lr1,.qbv050L0r0I0F0u0U0S0c0d0U0F0S0S0s010I0u0G010406050S0H0N0N0F0V0B040g0p100K0n050C101214160~0G04051k1d1n0C1k0~0L0u0#0.0:0=0@0A0u0n0A0U1B0A0I0|050)0!0U0r1w0;0?011A1C1E1C0I1K1M1I0I0V1l0I0A0.0j0,0G0F0K0@0e011O1y010o0+0r0K0F0N0r1I0S1,0K1=1Q1^1M1{1}0|0a0c181a0n0S0#0j0V0S0d1D0F1c1e211l0C1%2q1!1$1#1J0L230@1E0K1`0j0S1I1t1v0/1P2A0u2C0K0j2H1I0G0V0r1l201-2q2W0K2V212z012O0V130U0|0c0W1d2Z0}0 2$2J1?2)2+2-0e2:2p0~2Z2%2`0F2,040c0q2~2X302@1x1Q33350c0k392!3b1-322h2{360y3j2=312^3e3o342-0v3s3l223v0@3f2-0w3B2?3m3E2(3x3g0x3J3u3d3F3O2-0D3R3c2K3N2*3y040W0M3Y3L3T3#3p0W2/2o3a3K3D3-3G3(2}3=3k3@3n3$350W383}3t3Z2_3V3(3i451o2T2q2H2t0L1$2y3M0d2P1~1l4g1m4e3@2Y2p054m0%2#3,3!0l0K0|0u0N0G2h0I3s0c3 3M0K4D040_1}3+3^3!0d0W0|030c0J0r0u200u0r0U0c110c1t1N0f4$0I0c0h0H0c1}0=1`4T320|0S0)0V4J454L3S3!0j0|0s4K4M3_0|4R0r3s5d580|0Y5i572_0|0G0r0V0o0T4m0H0K0I5s5n471Q0{040i0t3B3C4 040K5B4A1?59045b555j1?0N0u0|3)5N4U5P0|0z0z5!2%5W0|3A455J4N50114S5T5o1Q5Q5S2;565C0@5,043*5/5:3-0l0|0o2h5c5_3F4E6b5 010j0O4E5M5^6g0K0!0|0V1-0n5h4c6c015E0i5*5;5L6A3-5E0t0P3B0c6J5~5O1Q4W4Y0c1A5s0c1f1}0c0!5s0r2k2N6I6K5U3e5=126u5}6(0@5Q0R5|2p6L5#6)040u5I6.2(0|1`0%6f6M6/5a726^6d4Q4F6,4v6w5Q5m6v6n5q5s5u5w5y5A7g736x0|5G4~4N6p042S2M542;6}6y6D3!0S1:04020Z0H0j0I0E0b5?0r0P0c7I7K7M7D1?5E0X765K6U7b2X7B0|5H5/6}6o5q0V7y7W5D7r7=0@7F0|7T7L0E0m0F0H5s7R7|7V7o777q047Z6m7p4P707%2!6@2%5Q0Q7!6B51147z7c6g6F3J0C4x2U4d8w0C4q2r4i1d2u8D0F1L8y4g0~8z0(0*0,04.

Summieren mit Speicher

Question
  • Erstelle eine Variable vom Typ Array.
  • 'Fülle' das Array mit sehr vielen Zahlen, ohne dass dein Programm abstürzt
  • berechne in einer zweiten Schleife die Summe aller Zahlen
  • miss die dafür benötigte Zeit
  • vergleiche die Zeit mit der Zeit aus der vorherigen Aufgabe

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

.128013S c2zLZ(o4kDgfö3e=)i6A78ü5*hy/9;aputnd0mw:-+s_l[r1],.qbv050M0r0K0H0u0V0T0c0d0V0H0T0T0s010K0u0I010406050T0J0O0O0H0X0D040g0p130L0n050E13151719110I04051n1g1q0E1n110M0u0(0;0?0^0`0C0u0n0C0V1E0C0K0 050,0%0V0r1z0@0_011D1F1H1F0K1N1P1L0K0X1o0K0C0;0j0/0I0H0L0`0e011R1B010o0.0r0L0H0O0r1L0T1/0L1^1T1{1P1~200 0a0c1b1d0n0T0(0j0X0T0d1G0H1f1h241o0E1*2t1%1)1(1M0M260`1H0L1}0j0T1L1w1y0=1S2D0u2F0L0j2K1L0I0X0r1o231:2t2Z0L2Y242C012R0X160V0 0c0Y1g2$10122)2M1_2,2.2:0e2?2s112$2*2}0H2/040c0q312!332`1A1T36380c0k3c2%3e1:352k2~390A3m2^342{3h3r372:0v3v3o253y0`3i2:0x3E2_3p3H2+3A3j0y3M3x3g3I3R2:0F3U3f2N3Q2-3B040Y0N3#3O3W3(3s0Y2=2r3d3N3G3:3J3+303^3n3`3q3)380Y3b403w3$2|3Y3+3l483F433=3u4f423P3}0Y3D4k3V3%4n3L4q4a3z440 0Y3T4v3/4s4c0Y3!4C3{4E4y040e3-4I4h3*0e3@2@4g4m4c0e3 2@1r2W2t2K2w0M1)2B3P0d2S211o4(1p4$3`2#2s054.0*2(4D1_0l0L0 0u0O0I2k0K3v0c4l3|52040|203E4V3|0 0L3v5b3%0j0 0s595n1_0O0u4z4O4!4r1_5p040B0B5m5A1T5v0 4p4U5i4s0 0T0,0X58485a5H0`5C5r5U5t3h0 5f0r5G4w5X0 0#5*4 5$040I0r0X0o0U4.0J0L0K5@5/4J1_0~040i0t5h5#0`0d0Y0 030c0w0X0X0H0D0c0*1{0L0u5@1}3.615;0f0H1G6q5!5W015Y5s6z630W0Z6r2*0l0 0o2k6C5+2+536N5:5X0P535l6y6O0L0%0 6h1e5)486801630i60355k6.3P630t0Q3E0c6`5V6O6a6c0c1D5@6e6g6i0c0%0r0o0z0V296_6{6*5d6u6w6W5z6O5C5.6)6z5d0H0I5?0L0M6;3:6,7w5O040u7z620 664f067I6*6~046d710X0c0b14200c0H0J0:0h6v290c2j256f6h6j772W2n2Q6H4m5P7S6(2@6|6S6A5q6R6s0`5J045y326*6J046L0X7|6/7B883P0j6U7B7j2s7^7}2+6!046$0n7?4`6D0 6-7o6Y6:8u7_6?6^4f6{8i891i5g6X7_5C0S5Z7@7f0 7h7c8x8j6E7D5;7C8R2*636G7H8N041}0*8b3:6B8H8j5d5(8U5,047n7k7_5d5?5^5`0j5|5~878X6=8s7G4U7f8l2V2P5T8^8S8s8;010T1?04020$0J0j0K0G7R150r0Q0c9k9m9o9f630!8*7A8F8p2!6*6?7/3|980X9a9y9e923:9h0 9v9n0G0m7V5@9t9T9x9P3%9z9B2|0 8(9E2%8D8c0 0R9)5;5Q179b8q6O9H4k0E4|2X4#a10E4=2u4*1g2xa80H1Oa34(11a40+0-0/04.

Laufzeit abhängig von der Problemgrösse

Summieren (Addition) ist das einfachste für einen Rechner. Andere Operationen sind viel "teurer", benötigen also mehr Zeit. Wie viel mehr Zeit ist abhängig vom spezifischen Problem.

Liniendiagramme

Beispiel: Daten visualisieren mit Liniendiagramm

Deine Abbildung

Deine Abbildung wird hier erscheinen

Mit der Bibliothek matplotlib können wir relativ einfach Daten visualisieren. Dazu verwenden wir zwei Arrays, die jeweils für eine bestimmte 'x-Koordinate', sowie die y-Koordinate einen Wert enthalten.

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Question

Verändere das folgende Programm um ein Diagramm zu zeichnen mit den Daten:

x y
1 9
4 6
6 12

Beschreibe die X-Achse mit 'Tage' und die Y-Achse mit 'Verkäufe'.

Deine Abbildung

Deine Abbildung wird hier erscheinen

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

.128013 Tc2L(o4xkDgfö3e=)iP6A7äV85hy/9;aputEnd0mws_l[r1],.b!v050N0q0K0H0t0T0R0b0d0T0H0R0R0r010K0t0I010406050R0J0P0P0H0V0D040f0o110M0m050E111315170 0I04051l1e1o0E1l0 0N0t0$0/0;0?0^0C0t0m0C0T1C0C0K0}050*0!0T0q1x0=0@011B1D1F1D0K1L1N1J0K0V1m0K0C0/0h0-0I0H0M0^0e011P1z010n0,0q0M0H0P0q1J0R1-0M1?1R1_1N1|1~0}0a0b191b0m0R0$0h0V0R0d1E0H1d1f221m0E1(2r1#1%1$1K0N240^1F0M1{0h0R1J1u1w0:1Q2B0t2D0M0h2I1J0I0V0q1m211.2r2X0M2W222A012P0V140T0}0b0W1e2!0~102%2K1@2*2,2.0e2;2q0 2!2(2{0H2-040b0p2 2Y312^1y1R34360b0i3a2#3c1.332i2|370B3k2?322_3f3p352.0v3t3m233w0^3g2.0x3C2@3n3F2)3y3h0A3K3v3e3G3P2.0F3S3d2L3O2+3z040W0O3Z3M3U3$3q0W2:2p3b3L3E3.3H3)2~3?3l3^3o3%360W393~3u3!2`3W3)3j463D413:3s4d403N3{0W3B461p2U2r2I2u0N1%2z3N0d2Q1 1m4s1n4q3^2Z2q054y0(2$3-3#0k0M0}0t0P0I2i0K3t0b4j3`4P04140K0I0T0h0K1F0!0Z0I0D4(4*4W4Y4N0}0=4?3T3#0M4!4(4V4d4e4x0W0}030b0l0t0q0R0q0V0b0c0q0,0b0P0J0?0b0R0h0b1M5h0!1{0#3,3_4}0}1_0m3=2=4X4|1@0h0}0r4{483f0}0u0D2Q0t0(0u4)512=4@1@0|040g3t5X1R0R550402030p0F0G4;0K0S0W0H5,5.0G5$5F1R5Z0s5w335z1C5C4H5}0^5H040Z5|5L3G0}0*0V0m0)6c4M5Y0}0g60525%0^0d5*570w0!0b1B5d0b0y0M0(0V0M614k0}0j0N0H0K1{5K6l1R695J465E6d015Z0U6k5x1@0P0t0}652Y6r6X0}0Y4W0b6;6,6%0}4c5W676-046/6U6V6Q0^6@044n6`6W5Z0X6H3`0}0D6L6N6G6U6,6S6P6#5~0}6Z4o6{733Y7p776.6:6=7q6(746!2(5Z6~5D707l727z0W3}76716|7952537b04507B3N696b7t7N4 5U7V3.5Z5#7Z7H2)6J7e6O7+7C7v7h6{4!7d6M7:7M7,5 7a5y7T0T5V666W7X7%810`4+0q886m5!8d5(5*5_5/0L2N580t2n0V1}8j5{7;3N7 4i7^0}7U8u3.878B810j0;5t0T8g0^7)8K015)0}8s0c2n0q8s8N8w2=7R818A7}2(8D8$6I040D8H0q8J8E8e7*8)3.8P5+5-5/0z5d0k0y0J0n8U8`8t8?3#8X306,7#846+6{8(857!0}0R0C0h0Q8W6n6p8Y1e4J2V4p9s0E4C2s4u1e2v9z0H5r4r1v2?9v0)0+0-04.

Zusammenhang Eingabegrösse und Laufzeit für Addition

Miss die Zeit die benötigt wird um immer mehr (grössere) Zahlen zu addieren. z.B. wie lange dauert es um 10, 1000, 100'000 Zahlen zu addieren?

Question

Untersuche die Laufzeit der Addition-Operation in Abhängigkeit der Eingabegrösse.

Deine Abbildung

Deine Abbildung wird hier erscheinen

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

.128013S 2zLo4gfö3e=iA75yW/9apnwm_r]vTcZ(xkD)P6ä8üh;utEd-:+s[1,.lb!0050X0m0V0w0o0*0#0c0G0*0w0#0#0n010V0o0x010406050#0U0A0A0w0C0s040f0k180y0i050u181a1c1e160x04051s1l1v0u1s160X0o0E0_0{0}0 0S0o0i0S0*1J0S0V14050;0+0*0m1E0|0~011I1K1M1K0V1S1U1Q0V0C1t0V0S0_0g0@0x0w0y0 0d011W1G010j0?0m0y0w0A0m1Q0#1@0y1}1Y201U2325140a0c1g1i0i0#0E0g0C0#0G1L0w1k1m291t0u1/2y1,1.1-1R0X2b0 1M0y220g0#1Q1B1D0`1X2I0o2K0y0g2P1Q0x0C0m1t281^2y2(0y2%292H012W0C1b0*140c0%1l2+15172.2R1~2;2?2^0d2{2x162+2/320w2@040c0l362)382 1F1Y3b3d0c0h3h2,3j1^3a2p333e0r3r2}39303m3w3c2^0O3A3t2a3D0 3n2^0q3J2~3u3M2:3F3o0Q3R3C3l3N3W2^0v3Z3k2S3V2=3G040%0-3*3T3#3-3x0%2`2w3i3S3L3^3O3:353}3s3 3v3.3d0%3g453B3+313%3:3q4d3K483`3z4k473U420%3I4p3!3,4s3Q4v4f3E49140%3Y4A3@4x4h0%3)4H404J4D040d3=4N4m3/0d3|2|4l4r4h0d444Z4q414$4c4)4w4g4Q0d4j4.4B3$4;4o4@4I4:3x0d4u4|4O4~4W4z524V3d0d4G574#4;4M5c4+4Q0l4T5g4P3x0l4Y374*5m3/0l4(2x1w2#2y2P2B0X1.2G3U0G2X261t5A1u5y3 2*5w5G0/2-4}1Y0K0y140o0A0x2p0V3A0c5r315W041b0V0x0*0g0V1M0+0)0x0s5/5;5%5)5U140|5}4/3m5+5/5$4U3U5V5X5Z5#624^2:5+11253J4!3^0G0%14030c0L0o0m0#0m0C0c0F0m0?0c0A0U0}0c0#0g0c1T6A0+220,3?533m14200i5p2)5(630 0g140n6e5T3N140N0s2X0o0/0N5:672|5~0 13040I3A6@010#6o0402030l0v0T5{0V0B0d72740T6|6Y016_0M6P3a6S1J6V2,6}6!040)7e6f6h1c0i0:7t6(7g140I7i4k066l3,6n6p0c0p0+0c1I6w0c0P0y0/0C0y7j4r140J0X0w0V226%6Q6Z6#7)2/6_0$0D7X41140s7#7%7W4d6X6f7q6$7|6}7/7;7F6}7J046q0t0o6x7%0#7`0c0j0R6x0E6w2r7P0/2K0c0H0w1L220c0w7N3;0(0c2U0c0r0-0-7Q0b2s0C0o1(8u0+0o0^8D7b758E5k5q7f0K6S2p7-7Y047{2|7}7A0g0z5X8%2x8)7*2:0+140C1^7x7z8;6_6{4d6}0A0o4E8U2)82140(8!3^91148D8T8{7.97993,9b049d9f3U7h0Z6k0c9s8:7k048e1c6=8/7p7,817f6h5Y0m9n3^7q7s8 9E140x6w0j0B5G0U0y7%0C9I3,8}7E4Z069t9u698Y9X9D7u5X9i1~8+8-9:3m8?048^1j9H9M6f8}9Y31148.957f9p3J9(9(6}5+a42,9)9J140!9@6)8$9r9tab14220/aj017 as9F6j9~8*149L6?9N049P0C9R9T9V6wa11Y9!am9sao047#0UaK9-az04808(aQaq9}aZ7f7q0Yav149x0C9z3i9%anaD7!7$7(ay8;9KaLak0w0x9P7Ta}7B6`b3acb37h5%af7I706q8h6x0z0m0*2s6u0c2a0S8w8u0z8b0c7x250}a_4ZaaaD7^a^ad5Sa{aAb660b0aqb87CbHaR0waT9,aC9 149#8/bb1~876qbr1V0{9|0caS6w7%0cbl19bm7L0X1B110g2V0c0e0U0c2#2s2V6kaQ66b3a|a`9v77bLb5c68#a@7`c998aV8;5+bBcecb3^b9687?aE0*a/7oa(bGcm4x14115=a$5wa6bMcx1~6 148R0T0fbP0j0e6A7`cKc9bV3~aDc3cG1Yc5bS7A5+0J0{6M0*c98~c#8;cI7173750W2U0ibp0i0C1h6v0c0I0y0McScY6^bU7=cycrctbE2/c!cD9.040sc)bic,b3c:cK0HcQ0c0$0#0Dd3c.9g04cU46cWcsc4cwdv8#0#0S8+c,dy2}0u5Q2$5xdO0u5K2z5C1l2CdV8w1U5z1CdL0/0;0?0#04.

Zusammenhang Eingabegrösse und Laufzeit für naive Multiplikation

Der Multiplikationsoperator * in Python und im Rechner im Allgemeinen ist sehr stark optimiert, damit die Rechnung schnell ist. Diese Optimierungen wollen wir umgehen und einen Algorithmus für 'naive' Multiplikation erstellen.

Aufgabe: naive Multiplikation

Schreibe eine Funktion welche zwei Zahlen a und b multipliziert, ohne dabei den *-Operator zu verwenden.

Du kannst den 'Überprüfen'-Knopf verwenden um deine Funktion zu testen.

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.
Verbleibende Versuche : 5/5

.128013 c2zL(o4Ukgfö3e=)i6785*hyW/aputnd0m:w-+slr1,.bv050H0p0F0C0s0P0O0b0c0P0C0O0O0q010F0s0D010406050O0E0J0J0C0Q0z040f0n0`0G0l050B0`0|0~100^0D04051e171h0B1e0^0H0s0V0(0*0,0.0y0s0l0y0P1v0y0F0?050Z0U0P0p1q0+0-011u1w1y1w0F1E1G1C0F0Q1f0F0y0(0h0$0D0C0G0.0d011I1s010m0#0p0G0C0J0p1C0O1$0G1,1K1/1G1=1@0?0a0b12140l0O0V0h0Q0O0c1x0C16181{1f0B1X2k1U1W1V1D0H1}0.1y0G1;0h0O1C1n1p0)1J2u0s2w0G0h2B1C0D0Q0p1f1`1%2k2Q0G2P1{2t012I0Q0}0P0?0R172T0@0_2W2D1-2Z2#0?0d2)2j0^2T2X2:0C2$040o2@2R2_2-1r1K2|2~0i312U331%2{2b2;040w3a2+2`2.363f2}0?0t3j3c1|3m0.370?0u3s2,3d3v2Y3o2~0v3j1i2N2k2B2n0H1W2s3D0c2J1^1f3M1g3K3B2U3I3S0X2V3C350.0k0?0X0m3j0b3Z2{0m0?0J0E0P0:0D1y0k0C0:0h0G3I3l3*010=040g44342E2Y0?0C4b3)4d480S4h3u460G0?0U4m2X480r0K3s0b4y3;454d4p042M2J0E0k0F3:3=3D0h0?0q4K4B1-0J0s0?0I4x4z4L460c0R0?030b0j0J0b0C0b0x0b0U4,0E0O0e0E2N2e2H0S4,0H1n0p2N1|0L0s0Q0b0X1|0A514J2i324z4A4c1-4#4%0b2a1|4;1@0y2!2}0O4}0l1;0C0E4,0M2#0T4X4y4Z4d3,040m2b4Q5h360?0s5L4i1-0h0L5O435d2U5g5R360U0?0Q1%5v4s3D484a5X3(4n4C4f5+464u4w5/065f5f5F2/0?4F0H4H5c2*5Z5;5S4O5Q685N4E0Q4G4I6b2X4N040N6i3D4D4r5{5|4Y4R1K5H2N0F4_5W665 6d62643A0B3$2O3J6J0B3W2l3O172o6Q0C1F6L3M0^6M0Y0!0$04.

Miss die Zeit die benötigt wird um immer mehr (grössere) Zahlen zu multiplizieren. z.B. wie lange dauert es um 10, 1000, 100'000 Zahlen zu multiplizieren?

Question

Untersuche die Laufzeit der Multiplikation-Operation in Abhängigkeit der Eingabegrösse.

Programmiere dazu die Multiplikation in deinem Programm selber: ohne (*) zu verwenden.

Deine Abbildung

Deine Abbildung wird hier erscheinen

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

.128013S 2zLo4gfö3e=iA75yW/9apnwm_r]vTcZ(xkD)P6ä8üh;utd-:s[1,.qlb!0050W0m0V0w0o0)0Z0c0G0)0w0Z0Z0n010V0o0x010406050Z0U0A0A0w0C0s040f0k170y0i050u17191b1d150x04051r1k1u0u1r150W0o0E0^0`0|0~0S0o0i0S0)1I0S0V13050:0*0)0m1D0{0}011H1J1L1J0V1R1T1P0V0C1s0V0S0^0g0?0x0w0y0~0d011V1F010j0=0m0y0w0A0m1P0Z1?0y1|1X1 1T2224130a0c1f1h0i0Z0E0g0C0Z0G1K0w1j1l281s0u1.2x1+1-1,1Q0W2a0~1L0y210g0Z1P1A1C0_1W2H0o2J0y0g2O1P0x0C0m1s271@2x2%0y2$282G012V0C1a0)130c0#1k2*14162-2Q1}2:2=2@0d2`2w152*2.310w2?040c0l352(372~1E1X3a3c0c0h3g2+3i1@392o323d0r3q2|382 3l3v3b2@0O3z3s293C0~3m2@0q3I2}3t3L2/3E3n0Q3Q3B3k3M3V2@0v3Y3j2R3U2;3F040#0,3)3S3!3,3w0#2_2v3h3R3K3@3N3/343|3r3~3u3-3c0#3f443A3*303$3/3p4c3J473_3y4j463T410#3H4o3Z3+4r3P4u4e3D48130#3X4z3?4w4g0#3(4G3 4I4C040d3;4M4l3.0d3{2{4k4q4g0d434Y4p404#4b4(4v4f4P0d4i4-4A3#4:4n4?4H4/3w0d4t4{4N4}4V4y514U3c0d4F564!4:4L5b4*4P0l4S5f4O3w0l4X364)5l3.0l4%2w1v2!2x2O2A0W1-2F3T0G2W251s5z1t5x3~2)5v5F0.2,4|1X0K0y130o0A0x2o0V3z0c5q305V041a0V0x0)0g0V1L0*0%0x0s5.5:5$5(5T130{5|4.3l5*5.5#4T3T5U5W5Y5!614@2/5*10243I4Z3@0G0#13030c0L0o0m0Z0m0C0c0F0m0=0c0A0U0|0c0Z0g0c1S6z0*210+3=523l131 0i5o2(5%620~0g130n6d5S3M130N0s2W0o0.0N5/662{5}0~12040I3z6?010Z6n0402030l0v0T5`0V0B0l71730T6{6X016^0M6O396R1I6U2+6|6Z040%7d6e6g1b0i0/7s6%7f130I7h4j6k3+6m6o0c0p0*0c1H6v0c0P0y0.0C0y7i4q130J0W0w0V216$6P6Y6!7%2.6^0!0D7V40130s7Z7#7U4c6W6e7p6#7`6|7-7/7E6|7H046p0t0o6w7#0Z7^0c0j0R6w0E6v2q7N0.2J0c0H0w1K210c0w7L3:0$0c2T0c0r0,0,7O0b2r0C0o1%8s0*0o0@8B7a748C5j5p7e0K6R2o7+7W047_2{7{7z0g0z5W8#2w8%7(2/0*130C1@7w7y8/6^6`4c6|0A0o4D8_7,130$8Y3@8 4D8R923T6^957 7e983/8S2(80130M0Y6j0c9q8.7j048c1b6;8-7o7*9f7t136h0m9b3@7p7r8}7e646v0j0B5F0U0y7#0C9G3+8{7D4Y069r9s688W9U9B7z5*0o963+8)8+9.308;048?1i9F9K6e8{9V30138,9k7e7g9o4j9#9#6|5*6C0)105.0o0K7!0o0ga27na47B9 6Q8!ap6@94as2/a1av7g9p9raa13210.9=1X7}aG6(049Eav9Iav9M0C9O9Q9S6vay7B9Y369!aB9L137Z0UaV9*8/aIa+9taE9{8$9z040XaJaw9u0:0C9x3ha!9qaC047Y7!7$9|8(139J6=a$040w0x0xaEaW6_aPaxb78`9m5$9$6l6 6p8f6w0z0m0)2r6t0c290S8u8s0z890c7w240|b64Ya9bc7?b5al5Ra,b9bkbdbfbhbm93bjb!8Za(a*bb9}bo7`bq7Gbs0cbG1U0`9`0cb)a}1UbA18bB7J0W1A10ak8s0e0U0c2!2r2U6jb265aNbVb%7;0476bi8|b+9+7X7@bM5van049ea=bPcrbS9lcva_5*0`6L0)cg047~co8/0Z1`700(0U5:0T6L8k8H0j0V9R0i02cQcSbiaY3}bccfci9/chcL9t105;a;ctb,b$c:3T6~138P0T6r2t8?0A6x8Ibxc c(7:4w13c,c{9Hc/c^cpb3cFbxcmavc}7072740p0y0e8q0)8odv21d8c-1}az67cjdddhbU7qbW0sdkcHdB1X9~dO0~doc 0H6z0V0c0!0Z0DdAde9Wb-5ka0ckadcIbadH9t1T7w7RdmdRa`5/0GcIcKd:c|cOc#cR0V0T0UbY6w1TcXe2c%d_dDd*aqdGa37|dgeidi0Z0S8)cmc)450u5P2#5wev0u5J2y5B1k2BeC8u1T5y1B2|ey0/0;0?04.

Zusammenhang Eingabegrösse und Laufzeit in einem Diagramm

Question

Versuche nun beide Messwerte in einem Diagramm darzustellen.

Deine Abbildung

Deine Abbildung wird hier erscheinen

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.