Array-Operation in MAPLE < Maple < Mathe-Software < Mathe < Vorhilfe
|
Aufgabe | HUFFMAN-Codierung in MAPLE |
Hallo an alle MAPLE-Genies,
im Rahmen eines Komplexseminars sollen wir die HUFFMAN-Codierung in MAPLE nachbilden.
Hierfür arbeite ich u. a. mit einem mehrdimensionalen Array B (nach aufsteigenden Häufigkeiten sortierte Blätter) und einem gleichfalls mehrdimensionalen Hilfsarray H für die entstehenden Knoten.
Zur Bildung des nächsten Knoten benötige ich die zwei kleinsten Werte aus B und H (d. h. entweder 2x aus B, 2x aus H oder 1x aus B und 1x aus H).
Folgender Code liefert zwar die jeweils beiden kleinsten Werte (Häufigkeiten) aus B und H in ein neues Array X, dauert jedoch recht lange. Außerdem habe ich keine andere Idee als noch ein zusätzliches Array Y einzuführen, um wiederum die beiden kleinsten Häufigkeiten aus X[1,2] bis X[4,2] zu bestimmen.
Leider habe ich keinen MAPLE-Befehl gefunden, der das Ganze komfortabler und schneller erledigt - kann mir evt. einer von euch helfen?
Vielen Dank im voraus und viele Grüße
Sven
for i from 1 to difChars do
> if (B[i,3] < X[3,2]) then
> X[3,1] := i:
> X[3,2] := B[i,3]:
> end if:
> if (B[i,3] < X[4,2]) and (i <> X[3,1]) then
> X[4,1] := i:
> X[4,2] := B[i,3]:
> end if:
> end do:
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:20 Di 13.01.2009 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|