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.

.128013d/B*nxü52Lc8[Aoysvf7.;w]rkRJqelö4 uE3tm1bi_pgZ)z:,a6=(h050b0E0M0Z0Q0F0r0I0l0F0Z0r0r0#010M0Q0S010406050r0J0N0N0Z0z0q040k0G120f0T050c12141618100S04051m1f1p0c1m100b0Q0s0:0=0@0_0%0Q0T0%0F1D0%0M0~050+0P0F0E1y0?0^011C1E1G1E0M1M1O1K0M0z1n0M0%0:0p0.0S0Z0f0_0j011Q1A010t0-0E0f0Z0N0E1K0r1.0f1@1S1`1O1}1 0~0a0I1a1c0T0r0s0p0z0r0l1F0Z1e1g231n0c1)2s1$1(1%1L0b250_1G0f1|0p0r1K1v1x0;1R2C0Q2E0f0p2J1K0S0z0E1n221/2s2Y0f2X232B012Q0z150F0~0O1f2#0 112(2L1^2+2-0~0j2;2r102#2)2{0Z2.040L2 2Z312^1z1S34360H392$3b1/332j2|040i3i2?322_3e3n350~0!3r3k243u0_3f0~0u3A2@3l3D2*3w360m3r1q2V2s2J2v0b1(2A3L0l2R201n3U1o3S3J2$3Q3!0)2%3K3d0_0l0O0~030I0C1P1}2m0I0B0E2m2E0z0I021~0S0w0I0d0z0p0x0r0E450x0h0z0)241 0%450U0Z1F1|0I0W130I0o0P0r0M0J0z0W0I0t0h4p1|3I3t3=2*0~0f0R4r4t0f3r0I3+2)0p0~0#4V4X3L0N0Q2}4$4M2M014Z040e0e4,3c4.4)2}3q2q3a3B330~0g4@3;4.4:4#4}2$4W4-1^0}040n0y4L4^1^0A0~0t2j533C4N0f0~0Q5o4Y0x5s4U58045a5i3e0P0~0z1/0T0E3Q5b1S5d0$5K5C3E4P4R4s285P545c0~0V0X3A0I5%5B5X3e515W5p550~0v5-50040Z0S0S1|0b5=3L5N5}5q5s604.5d0V3A4 3L0f5E042U2O0M635Y045O5z4%4N0r1=04020D0J0p0M0w0o0f0W5U0I0K1O1 0f0M0E0X466r6t0w6g5M0~0Y5u696b5V6k5L0_5 6U5Q4O04526Y5*6W5Z665z100c3.2W3R6:0c3(2t3W1f2w6`0Z1N6=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.

.128013d/B*n(S52Lc8oysvf70.;wrkqe+lö4 u-3tm1bi_pgZ)z:,a6D=9h050b0A0J0W0N0C0p0F0l0C0W0p0p0Z010J0N0P010406050p0G0K0K0W0x0o040k0D100f0Q050c101214160~0P04051k1d1n0c1k0~0b0N0q0.0:0=0@0#0N0Q0#0C1B0#0J0|050)0M0C0A1w0;0?011A1C1E1C0J1K1M1I0J0x1l0J0#0.0n0,0P0W0f0@0j011O1y010r0+0A0f0W0K0A1I0p1,0f1=1Q1^1M1{1}0|0a0F181a0Q0p0q0n0x0p0l1D0W1c1e211l0c1%2q1!1$1#1J0b230@1E0f1`0n0p1I1t1v0/1P2A0N2C0f0n2H1I0P0x0A1l201-2q2W0f2V212z012O0x130C0|0F0L1d2Z0}0 2$2J1?2)2+2-0j2:2p0~2Z2%2`0W2,040F0I2~2X302@1x1Q33350F0E392!3b1-322h2{360i3j2=312^3e3o342-0X3s3l223v0@3f2-0s3B2?3m3E2(3x3g0m3J3u3d3F3O2-0!3R3c2K3N2*3y040L0t3Y3L3T3#3p0L2/2o3a3K3D3-3G3(2}3=3k3@3n3$350L383}3t3Z2_3V3(3i451o2T2q2H2t0b1$2y3M0l2P1~1l4g1m4e3@2Y2p054m0%2#3,3!0y0f0|0N0K0P2h0J3s0F3 3M0f4D040_1}3+3^3!0l0L0|030F0d0A0N200N0A0C0F110F1t1N0R4$0J0F0T0G0F1}0=1`4T320|0p0)0x4J454L3S3!0n0|0Z4K4M3_0|4R0A3s5d580|0u5i572_0|0P0A0x0r0O4m0G0f0J5s5n471Q0{040g0S3B3C4 040f5B4A1?59045b555j1?0K0N0|3)5N4U5P0|0e0e5!2%5W0|3A455J4N50114S5T5o1Q5Q5S2;565C0@5,043*5/5:3-0y0|0r2h5c5_3F4E6b5 010n0w4E5M5^6g0f0M0|0x1-0Q5h4c6c015E0g5*5;5L6A3-5E0S0U3B0F6J5~5O1Q4W4Y0F1A5s0F1f1}0F0M5s0A2k2N6I6K5U3e5=126u5}6(0@5Q0B5|2p6L5#6)040N5I6.2(0|1`0%6f6M6/5a726^6d4Q4F6,4v6w5Q5m6v6n5q5s5u5w5y5A7g736x0|5G4~4N6p042S2M542;6}6y6D3!0p1:04020z0G0n0J0v0h5?0A0U0F7I7K7M7D1?5E0V765K6U7b2X7B0|5H5/6}6o5q0x7y7W5D7r7=0@7F0|7T7L0v0Y0W0G5s7R7|7V7o777q047Z6m7p4P707%2!6@2%5Q0H7!6B51147z7c6g6F3J0c4x2U4d8w0c4q2r4i1d2u8D0W1L8y4g0~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.

.128013d/*n(Sü52Lc8[Aoysvf70.;w]rkqe+lö4 u-3tm1bi_pg):zZ,a6D=9h050b0D0M0Z0Q0F0r0I0l0F0Z0r0r0$010M0Q0S010406050r0J0N0N0Z0A0q040k0G130e0T050c13151719110S04051n1g1q0c1n110b0Q0s0;0?0^0`0(0Q0T0(0F1E0(0M0 050,0P0F0D1z0@0_011D1F1H1F0M1N1P1L0M0A1o0M0(0;0p0/0S0Z0e0`0j011R1B010t0.0D0e0Z0N0D1L0r1/0e1^1T1{1P1~200 0a0I1b1d0T0r0s0p0A0r0l1G0Z1f1h241o0c1*2t1%1)1(1M0b260`1H0e1}0p0r1L1w1y0=1S2D0Q2F0e0p2K1L0S0A0D1o231:2t2Z0e2Y242C012R0A160F0 0I0O1g2$10122)2M1_2,2.2:0j2?2s112$2*2}0Z2/040I0L312!332`1A1T36380I0H3c2%3e1:352k2~390i3m2^342{3h3r372:0!3v3o253y0`3i2:0u3E2_3p3H2+3A3j0m3M3x3g3I3R2:0%3U3f2N3Q2-3B040O0v3#3O3W3(3s0O2=2r3d3N3G3:3J3+303^3n3`3q3)380O3b403w3$2|3Y3+3l483F433=3u4f423P3}0O3D4k3V3%4n3L4q4a3z440 0O3T4v3/4s4c0O3!4C3{4E4y040j3-4I4h3*0j3@2@4g4m4c0j3 2@1r2W2t2K2w0b1)2B3P0l2S211o4(1p4$3`2#2s054.0*2(4D1_0B0e0 0Q0N0S2k0M3v0I4l3|52040|203E4V3|0 0e3v5b3%0p0 0$595n1_0N0Q4z4O4!4r1_5p040d0d5m5A1T5v0 4p4U5i4s0 0r0,0A58485a5H0`5C5r5U5t3h0 5f0D5G4w5X0 0w5*4 5$040S0D0A0t0R4.0J0e0M5@5/4J1_0~040f0U5h5#0`0l0O0 030I0o0A0A0Z0q0I0*1{0e0Q5@1}3.615;0W0Z1G6q5!5W015Y5s6z630n0z6r2*0B0 0t2k6C5+2+536N5:5X0y535l6y6O0e0P0 6h1e5)486801630f60355k6.3P630U0V3E0I6`5V6O6a6c0I1D5@6e6g6i0I0P0D0t0h0F296_6{6*5d6u6w6W5z6O5C5.6)6z5d0Z0S5?0e0b6;3:6,7w5O040Q7z620 664f067I6*6~046d710A0I0g14200I0Z0J0:0X6v290I2j256f6h6j772W2n2Q6H4m5P7S6(2@6|6S6A5q6R6s0`5J045y326*6J046L0A7|6/7B883P0p6U7B7j2s7^7}2+6!046$0T7?4`6D0 6-7o6Y6:8u7_6?6^4f6{8i891i5g6X7_5C0E5Z7@7f0 7h7c8x8j6E7D5;7C8R2*636G7H8N041}0*8b3:6B8H8j5d5(8U5,047n7k7_5d5?5^5`0p5|5~878X6=8s7G4U7f8l2V2P5T8^8S8s8;010r1?04020C0J0p0M0x7R150D0V0I9k9m9o9f630Y8*7A8F8p2!6*6?7/3|980A9a9y9e923:9h0 9v9n0x0#7V5@9t9T9x9P3%9z9B2|0 8(9E2%8D8c0 0K9)5;5Q179b8q6O9H4k0c4|2X4#a10c4=2u4*1g2xa80Z1Oa34(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.

.128013d/n(Px52Lc8[Aoysvf70.;äw]rkelö4 u!E3tm1VbTi_pg),a6D=9h050b0C0L0X0R0D0q0G0k0D0X0q0q0!010L0R0T010406050q0H0M0M0X0A0p040j0E110d0U050c111315170 0T04051l1e1o0c1l0 0b0R0r0/0;0?0^0$0R0U0$0D1C0$0L0}050*0P0D0C1x0=0@011B1D1F1D0L1L1N1J0L0A1m0L0$0/0o0-0T0X0d0^0i011P1z010s0,0C0d0X0M0C1J0q1-0d1?1R1_1N1|1~0}0a0G191b0U0q0r0o0A0q0k1E0X1d1f221m0c1(2r1#1%1$1K0b240^1F0d1{0o0q1J1u1w0:1Q2B0R2D0d0o2I1J0T0A0C1m211.2r2X0d2W222A012P0A140D0}0G0N1e2!0~102%2K1@2*2,2.0i2;2q0 2!2(2{0X2-040G0K2 2Y312^1y1R34360G0F3a2#3c1.332i2|370h3k2?322_3f3p352.0Y3t3m233w0^3g2.0t3C2@3n3F2)3y3h0l3K3v3e3G3P2.0#3S3d2L3O2+3z040N0u3Z3M3U3$3q0N2:2p3b3L3E3.3H3)2~3?3l3^3o3%360N393~3u3!2`3W3)3j463D413:3s4d403N3{0N3B461p2U2r2I2u0b1%2z3N0k2Q1 1m4s1n4q3^2Z2q054y0(2$3-3#0B0d0}0R0M0T2i0L3t0G4j3`4P04140L0T0D0o0L1F0P0v0T0p4(4*4W4Y4N0}0=4?3T3#0d4!4(4V4d4e4x0N0}030G0Z0R0C0q0C0A0G0Q0C0,0G0M0H0?0G0q0o0G1M5h0P1{0I3,3_4}0}1_0U3=2=4X4|1@0o0}0!4{483f0}0f0p2Q0R0(0f4)512=4@1@0|040e3t5X1R0q550402030K0#0w4;0L0S0N0X5,5.0w5$5F1R5Z0V5w335z1C5C4H5}0^5H040v5|5L3G0}0*0A0U0)6c4M5Y0}0e60525%0^0k5*570n0P0G1B5d0G0x0d0(0A0d614k0}0g0b0X0L1{5K6l1R695J465E6d015Z0m6k5x1@0M0R0}652Y6r6X0}0W4W0G6;6,6%0}4c5W676-046/6U6V6Q0^6@044n6`6W5Z0z6H3`0}0p6L6N6G6U6,6S6P6#5~0}6Z4o6{733Y7p776.6:6=7q6(746!2(5Z6~5D707l727z0N3}76716|7952537b04507B3N696b7t7N4 5U7V3.5Z5#7Z7H2)6J7e6O7+7C7v7h6{4!7d6M7:7M7,5 7a5y7T0D5V666W7X7%810`4+0C886m5!8d5(5*5_5/0J2N580R2n0A1}8j5{7;3N7 4i7^0}7U8u3.878B810g0;5t0D8g0^7)8K015)0}8s0Q2n0C8s8N8w2=7R818A7}2(8D8$6I040p8H0C8J8E8e7*8)3.8P5+5-5/0O5d0B0x0H0s8U8`8t8?3#8X306,7#846+6{8(857!0}0q0$0o0y8W6n6p8Y1e4J2V4p9s0c4C2s4u1e2v9z0X5r4r1v2?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.

.128013d/nS52Lc8[Aysvf7.;wkWlö4 u-!Etm1Tp6D=ä(9üPxo0]re+3bi_g)Z:,zah050b0W0E0,0!0w0n0z0i0w0,0n0n0L010E0!0I010406050n0A0F0F0,0V0m040h0x180d0$050c181a1c1e160I04051s1l1v0c1s160b0!0o0_0{0}0 0-0!0$0-0w1J0-0E14050;0Z0w0W1E0|0~011I1K1M1K0E1S1U1Q0E0V1t0E0-0_0S0@0I0,0d0 0g011W1G010p0?0W0d0,0F0W1Q0n1@0d1}1Y201U2325140a0z1g1i0$0n0o0S0V0n0i1L0,1k1m291t0c1/2y1,1.1-1R0b2b0 1M0d220S0n1Q1B1D0`1X2I0!2K0d0S2P1Q0I0V0W1t281^2y2(0d2%292H012W0V1b0w140z0G1l2+15172.2R1~2;2?2^0g2{2x162+2/320,2@040z0Y362)382 1F1Y3b3d0z0y3h2,3j1^3a2p333e0f3r2}39303m3w3c2^0J3A3t2a3D0 3n2^0q3J2~3u3M2:3F3o0j3R3C3l3N3W2^0O3Z3k2S3V2=3G040G0T3*3T3#3-3x0G2`2w3i3S3L3^3O3:353}3s3 3v3.3d0G3g453B3+313%3:3q4d3K483`3z4k473U420G3I4p3!3,4s3Q4v4f3E49140G3Y4A3@4x4h0G3)4H404J4D040g3=4N4m3/0g3|2|4l4r4h0g444Z4q414$4c4)4w4g4Q0g4j4.4B3$4;4o4@4I4:3x0g4u4|4O4~4W4z524V3d0g4G574#4;4M5c4+4Q0Y4T5g4P3x0Y4Y374*5m3/0Y4(2x1w2#2y2P2B0b1.2G3U0i2X261t5A1u5y3 2*5w5G0/2-4}1Y0u0d140!0F0I2p0E3A0z5r315W041b0E0I0w0S0E1M0Z0r0I0m5/5;5%5)5U140|5}4/3m5+5/5$4U3U5V5X5Z5#624^2:5+11253J4!3^0i0G14030z0K0!0W0n0W0V0z0H0W0?0z0F0A0}0z0n0S0z1T6A0Z220C3?533m14200$5p2)5(630 0S140L6e5T3N140Q0m2X0!0/0Q5:672|5~0 13040N3A6@010n6o0402030Y0O0s5{0E0#0g72740s6|6Y016_0%6P3a6S1J6V2,6}6!040r7e6f6h1c0$0:7t6(7g140N7i4k066l3,6n6p0z0l0Z0z1I6w0z0M0d0/0V0d7j4r140R0b0,0E226%6Q6Z6#7)2/6_0k0U7X41140m7#7%7W4d6X6f7q6$7|6}7/7;7F6}7J046q0v0!6x7%0n7`0z0p0P6x0o6w2r7P0/2K0z0(0,1L220z0,7N3;0*0z2U0z0f0T0T7Q0e2s0V0!1(8u0Z0!0^8D7b758E5k5q7f0u6S2p7-7Y047{2|7}7A0S0t5X8%2x8)7*2:0Z140V1^7x7z8;6_6{4d6}0F0!4E8U2)82140*8!3^91148D8T8{7.97993,9b049d9f3U7h0)6k0z9s8:7k048e1c6=8/7p7,817f6h5Y0W9n3^7q7s8 9E140I6w0p0#5G0A0d7%0V9I3,8}7E4Z069t9u698Y9X9D7u5X9i1~8+8-9:3m8?048^1j9H9M6f8}9Y31148.957f9p3J9(9(6}5+a42,9)9J140X9@6)8$9r9tab14220/aj017 as9F6j9~8*149L6?9N049P0V9R9T9V6wa11Y9!am9sao047#0AaK9-az04808(aQaq9}aZ7f7q0Bav149x0V9z3i9%anaD7!7$7(ay8;9KaLak0,0I9P7Ta}7B6`b3acb37h5%af7I706q8h6x0t0W0w2s6u0z2a0-8w8u0t8b0z7x250}a_4ZaaaD7^a^ad5Sa{aAb660b0aqb87CbHaR0,aT9,aC9 149#8/bb1~876qbr1V0{9|0zaS6w7%0zbl19bm7L0b1B110S2V0z0+0A0z2#2s2V6kaQ66b3a|a`9v77bLb5c68#a@7`c998aV8;5+bBcecb3^b9687?aE0wa/7oa(bGcm4x14115=a$5wa6bMcx1~6 148R0s0hbP0p0+6A7`cKc9bV3~aDc3cG1Yc5bS7A5+0R0{6M0wc98~c#8;cI7173750D2U0$bp0$0V1h6v0z0N0d0%cScY6^bU7=cycrctbE2/c!cD9.040mc)bic,b3c:cK0(cQ0z0k0n0Ud3c.9g04cU46cWcsc4cwdv8#0n0-8+c,dy2}0c5Q2$5xdO0c5K2z5C1l2CdV8w1U5z1CdL0/0;0?0n04.

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

.128013d/*n52Lc8oysvf70.wrkWUe+lö4 u-3tm1bipg):z,a6=(h050b0x0G0R0K0z0m0C0i0z0R0m0m0T010G0K0L010406050m0D0H0H0R0t0l040h0A0`0e0M050c0`0|0~100^0L04051e171h0c1e0^0b0K0n0(0*0,0.0V0K0M0V0z1v0V0G0?050Z0J0z0x1q0+0-011u1w1y1w0G1E1G1C0G0t1f0G0V0(0k0$0L0R0e0.0g011I1s010o0#0x0e0R0H0x1C0m1$0e1,1K1/1G1=1@0?0a0C12140M0m0n0k0t0m0i1x0R16181{1f0c1X2k1U1W1V1D0b1}0.1y0e1;0k0m1C1n1p0)1J2u0K2w0e0k2B1C0L0t0x1f1`1%2k2Q0e2P1{2t012I0t0}0z0?0I172T0@0_2W2D1-2Z2#0?0g2)2j0^2T2X2:0R2$040F2@2R2_2-1r1K2|2~0B312U331%2{2b2;040f3a2+2`2.363f2}0?0S3j3c1|3m0.370?0p3s2,3d3v2Y3o2~0j3j1i2N2k2B2n0b1W2s3D0i2J1^1f3M1g3K3B2U3I3S0X2V3C350.0u0?0X0o3j0C3Z2{0o0?0H0D0z0:0L1y0u0R0:0k0e3I3l3*010=040U44342E2Y0?0R4b3)4d480Q4h3u460e0?0J4m2X480N0O3s0C4y3;454d4p042M2J0D0u0G3:3=3D0k0?0T4K4B1-0H0K0?0q4x4z4L460i0I0?030C0w0H0C0R0C0d0C0J4,0D0m0P0D2N2e2H0Q4,0b1n0x2N1|0s0K0t0C0X1|0v514J2i324z4A4c1-4#4%0C2a1|4;1@0V2!2}0m4}0M1;0R0D4,0E2#0r4X4y4Z4d3,040o2b4Q5h360?0K5L4i1-0k0s5O435d2U5g5R360J0?0t1%5v4s3D484a5X3(4n4C4f5+464u4w5/065f5f5F2/0?4F0b4H5c2*5Z5;5S4O5Q685N4E0t4G4I6b2X4N040y6i3D4D4r5{5|4Y4R1K5H2N0G4_5W665 6d62643A0c3$2O3J6J0c3W2l3O172o6Q0R1F6L3M0^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.

.128013d/nS52Lc8[Aysvf7.;wkWlö4 u-!tm1Tp6D=ä(9üPxo0]rqe3bi_g)Z:,zah050b0W0D0+0Z0w0n0z0i0w0+0n0n0K010D0Z0H010406050n0A0E0E0+0U0m040h0x170d0#050c17191b1d150H04051r1k1u0c1r150b0Z0o0^0`0|0~0,0Z0#0,0w1I0,0D13050:0Y0w0W1D0{0}011H1J1L1J0D1R1T1P0D0U1s0D0,0^0R0?0H0+0d0~0g011V1F010p0=0W0d0+0E0W1P0n1?0d1|1X1 1T2224130a0z1f1h0#0n0o0R0U0n0i1K0+1j1l281s0c1.2x1+1-1,1Q0b2a0~1L0d210R0n1P1A1C0_1W2H0Z2J0d0R2O1P0H0U0W1s271@2x2%0d2$282G012V0U1a0w130z0F1k2*14162-2Q1}2:2=2@0g2`2w152*2.310+2?040z0X352(372~1E1X3a3c0z0y3g2+3i1@392o323d0f3q2|382 3l3v3b2@0I3z3s293C0~3m2@0q3I2}3t3L2/3E3n0j3Q3B3k3M3V2@0N3Y3j2R3U2;3F040F0S3)3S3!3,3w0F2_2v3h3R3K3@3N3/343|3r3~3u3-3c0F3f443A3*303$3/3p4c3J473_3y4j463T410F3H4o3Z3+4r3P4u4e3D48130F3X4z3?4w4g0F3(4G3 4I4C040g3;4M4l3.0g3{2{4k4q4g0g434Y4p404#4b4(4v4f4P0g4i4-4A3#4:4n4?4H4/3w0g4t4{4N4}4V4y514U3c0g4F564!4:4L5b4*4P0X4S5f4O3w0X4X364)5l3.0X4%2w1v2!2x2O2A0b1-2F3T0i2W251s5z1t5x3~2)5v5F0.2,4|1X0u0d130Z0E0H2o0D3z0z5q305V041a0D0H0w0R0D1L0Y0r0H0m5.5:5$5(5T130{5|4.3l5*5.5#4T3T5U5W5Y5!614@2/5*10243I4Z3@0i0F13030z0J0Z0W0n0W0U0z0G0W0=0z0E0A0|0z0n0R0z1S6z0Y210C3=523l131 0#5o2(5%620~0R130K6d5S3M130P0m2W0Z0.0P5/662{5}0~12040M3z6?010n6n0402030X0N0s5`0D0!0X71730s6{6X016^0$6O396R1I6U2+6|6Z040r7d6e6g1b0#0/7s6%7f130M7h4j6k3+6m6o0z0l0Y0z1H6v0z0L0d0.0U0d7i4q130Q0b0+0D216$6P6Y6!7%2.6^0k0T7V40130m7Z7#7U4c6W6e7p6#7`6|7-7/7E6|7H046p0v0Z6w7#0n7^0z0p0O6w0o6v2q7N0.2J0z0%0+1K210z0+7L3:0)0z2T0z0f0S0S7O0e2r0U0Z1%8s0Y0Z0@8B7a748C5j5p7e0u6R2o7+7W047_2{7{7z0R0t5W8#2w8%7(2/0Y130U1@7w7y8/6^6`4c6|0E0Z4D8_7,130)8Y3@8 4D8R923T6^957 7e983/8S2(80130$0(6j0z9q8.7j048c1b6;8-7o7*9f7t136h0W9b3@7p7r8}7e646v0p0!5F0A0d7#0U9G3+8{7D4Y069r9s688W9U9B7z5*0Z963+8)8+9.308;048?1i9F9K6e8{9V30138,9k7e7g9o4j9#9#6|5*6C0w105.0Z0u7!0Z0Ra27na47B9 6Q8!ap6@94as2/a1av7g9p9raa13210.9=1X7}aG6(049Eav9Iav9M0U9O9Q9S6vay7B9Y369!aB9L137Z0AaV9*8/aIa+9taE9{8$9z040BaJaw9u0:0U9x3ha!9qaC047Y7!7$9|8(139J6=a$040+0H0HaEaW6_aPaxb78`9m5$9$6l6 6p8f6w0t0W0w2r6t0z290,8u8s0t890z7w240|b64Ya9bc7?b5al5Ra,b9bkbdbfbhbm93bjb!8Za(a*bb9}bo7`bq7Gbs0zbG1U0`9`0zb)a}1UbA18bB7J0b1A10ak8s0*0A0z2!2r2U6jb265aNbVb%7;0476bi8|b+9+7X7@bM5van049ea=bPcrbS9lcva_5*0`6L0wcg047~co8/0n1`700V0A5:0s6L8k8H0p0D9R0#02cQcSbiaY3}bccfci9/chcL9t105;a;ctb,b$c:3T6~138P0s6r2t8?0E6x8Ibxc c(7:4w13c,c{9Hc/c^cpb3cFbxcmavc}7072740l0d0*8q0w8odv21d8c-1}az67cjdddhbU7qbW0mdkcHdB1X9~dO0~doc 0%6z0D0z0k0n0TdAde9Wb-5ka0ckadcIbadH9t1T7w7RdmdRa`5/0icIcKd:c|cOc#cR0D0s0AbY6w1TcXe2c%d_dDd*aqdGa37|dgeidi0n0,8)cmc)450c5P2#5wev0c5J2y5B1k2BeC8u1T5y1B2|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.