Multiplikation von PAM Matrizen

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Little John

Beitrag von Little John »

2Froggerprogger:
Vielen Dank für die ganzen ausführlichen Erklärungen zu den Matrizen! Das interessiert mich auch.
Froggerprogger hat geschrieben:
wie soll ich denn PAM1^250 innerhalb von 10 Minuten ohne Hilfe ausrechnen?
Antwort: gar nicht
Aber das geht doch sicher mit Hilfe einer geeigneten PB-Routine, oder? ;-)
Hat schon jemand PB-Code zur Matrizen-Multiplikation geschrieben?

Gruß, Little John
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag von Froggerprogger »

Code: Alles auswählen

; not tested, but... well it *should* work

Dim A.d(m,p) ; A = m x p - matrix
Dim B.d(p,n) ; B = p x n - matrix
Dim C.d(m,n) ; C = m x n - matrix.

(...) ; fill A and B

; calculate C = A*B
For i=0 To m-1
  For j=0 To n-1
    sum.d = 0
    For k=0 To p-1
     sum + A(i,k)*B(k,j)
    Next
    C(i,j) = sum
  Next
Next

(...) ; print C
:D

Dieses naive Verfahren braucht kubische Laufzeit, ist aber trotzdem für "kleine bis mittlere" Matrizen sehr schnell. Für "große" Matrizen gibt es weit schnellere Verfahren (z.B. mittels Strassen-Algorithmus).
!UD2
Little John

Beitrag von Little John »

Bei kubischer Laufzeit bekomme ich leicht kalte Füße. ;-)
Aber Du hast natürlich völlig Recht, für kleinere Aufgaben ist das kein Problem.

Gruß, Little John
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Hallo,

Danke für die Hilfe. Ich muss jetzt erstmal die Klausuren noch bestehen und dann werd ich mir in den Ferien das mal genauer ansehen.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten