Komputeralgebrai Algoritmusok Adatábrázolás Czirbusz Sándor, Komputeralgebra Tanszék 2015-2016 Ősz
Többszörös pontosságú egészek Helyiértékes tárolás: l 1 s d i B i i=0 ahol B a számrendszer alapszáma, l a számjegyek száma, d i {0, 1,..., B 1} a számjegyek, s az előjel.
Többszörös pontosságú egészek Helyiértékes tárolás: l 1 s d i B i i=0 ahol B a számrendszer alapszáma, l a számjegyek száma, d i {0, 1,..., B 1} a számjegyek, s az előjel. Ábrázolási módok : Fix hosszúságú tömb Előre kell rögzíteni a hosszat, memóriapazarlás
Többszörös pontosságú egészek Helyiértékes tárolás: l 1 s d i B i i=0 ahol B a számrendszer alapszáma, l a számjegyek száma, d i {0, 1,..., B 1} a számjegyek, s az előjel. Ábrázolási módok : Fix hosszúságú tömb Előre kell rögzíteni a hosszat, memóriapazarlás Dinamikus lista A pointerek tárolása nagy memóriaigényű, a feldolgozási idő hosszú
Többszörös pontosságú egészek Helyiértékes tárolás: l 1 s d i B i i=0 ahol B a számrendszer alapszáma, l a számjegyek száma, d i {0, 1,..., B 1} a számjegyek, s az előjel. Ábrázolási módok : Fix hosszúságú tömb Előre kell rögzíteni a hosszat, memóriapazarlás Dinamikus lista A pointerek tárolása nagy memóriaigényű, a feldolgozási idő hosszú Dinamikus tömb Komoly memóriamenedzselést igényel
Megvalósítás GMP: MAPLE, Mathematica, Singular, Axiom
Megvalósítás GMP: MAPLE, Mathematica, Singular, Axiom MPIR: SAGEMATH, CoCoA
Megvalósítás GMP: MAPLE, Mathematica, Singular, Axiom MPIR: SAGEMATH, CoCoA
Megvalósítás GMP: MAPLE, Mathematica, Singular, Axiom MPIR: SAGEMATH, CoCoA Megjegyzés: a szabad rendszerekben többnyire cserélhetők
A MAPLE egészei Dinamikus adatvektor int± n i 0 i 1... i n
A MAPLE egészei Dinamikus adatvektor int± n i 0 i 1... i n Kis egészek: egy szóban (C jellegű adatkezelés)
A MAPLE egészei Dinamikus adatvektor int± n i 0 i 1... i n Kis egészek: egy szóban (C jellegű adatkezelés) A számrendszer alapszáma: 10 000.
Az adatabsztrakció forma szintjén eldöntendő kérdések: A) normál- vagy kanonikus reprezentáció;
Az adatabsztrakció forma szintjén eldöntendő kérdések: A) normál- vagy kanonikus reprezentáció; B) rekurzív vs disztributív reprezentáció;
Az adatabsztrakció forma szintjén eldöntendő kérdések: A) normál- vagy kanonikus reprezentáció; B) rekurzív vs disztributív reprezentáció; C) sűrű vs ritka ábrázolás;
Az adatabsztrakció forma szintjén eldöntendő kérdések: A) normál- vagy kanonikus reprezentáció; B) rekurzív vs disztributív reprezentáció; C) sűrű vs ritka ábrázolás; D) a zéruskitevő kérdése.
Megjegyzések az A) független a számítógépes ábrázolástól;
Megjegyzések az A) független a számítógépes ábrázolástól; rekurzív ábrázolás láncolt lista;
Megjegyzések az A) független a számítógépes ábrázolástól; rekurzív ábrázolás láncolt lista; disztributív tömbös;
Megjegyzések az A) független a számítógépes ábrázolástól; rekurzív ábrázolás láncolt lista; disztributív tömbös; a rendszerek többsége ritka ábrázolást használ;
Megjegyzések az A) független a számítógépes ábrázolástól; rekurzív ábrázolás láncolt lista; disztributív tömbös; a rendszerek többsége ritka ábrázolást használ; a D) nem túl lényeges.
Reprezentáció láncolt listával A D[x 2,..., x n ][x 1 ] tartományban kiszorzott kanonikus formát használunk, ezt rekurzíve alkalmazzuk D[x 2,..., x n ]-ben:
Reprezentáció láncolt listával A D[x 2,..., x n ][x 1 ] tartományban kiszorzott kanonikus formát használunk, ezt rekurzíve alkalmazzuk D[x 2,..., x n ]-ben: együttható-link exponens következő-link
Reprezentáció láncolt listával A D[x 2,..., x n ][x 1 ] tartományban kiszorzott kanonikus formát használunk, ezt rekurzíve alkalmazzuk D[x 2,..., x n ]-ben: együttható-link exponens következő-link Egy ilyen csúcspont egy a i x i 1 tag, ahol a i D[x 2,..., x n ];
Reprezentáció láncolt listával A D[x 2,..., x n ][x 1 ] tartományban kiszorzott kanonikus formát használunk, ezt rekurzíve alkalmazzuk D[x 2,..., x n ]-ben: együttható-link exponens következő-link Egy ilyen csúcspont egy a i x i 1 tag, ahol a i D[x 2,..., x n ]; ahol exponens = i, a linkek a szokásosak.
Reprezentáció láncolt listával A D[x 2,..., x n ][x 1 ] tartományban kiszorzott kanonikus formát használunk, ezt rekurzíve alkalmazzuk D[x 2,..., x n ]-ben: együttható-link exponens következő-link Egy ilyen csúcspont egy a i x i 1 tag, ahol a i D[x 2,..., x n ]; ahol exponens = i, a linkek a szokásosak. A MathPiper rendszer egy polinomja a ViewList parancsának kimeneteként:
Reprezentáció dinamikus tömbbel Többváltozós polinomot disztributív módon ábrázolunk: A polinom: típus/hossz coeff monom-link... coeff monom-link
Reprezentáció dinamikus tömbbel Többváltozós polinomot disztributív módon ábrázolunk: A polinom: típus/hossz coeff monom-link... coeff monom-link A monom: típus/hossz exp var... exp var
A klasszikus I Irányított körmentes gráf : A MAPLE-ben minden kifejezést egy reprezentál. A polinomok általában: sum expr 1 coeff 1 expr 2 coeff 2...,
A klasszikus I Irányított körmentes gráf : A MAPLE-ben minden kifejezést egy reprezentál. A polinomok általában: sum expr 1 coeff 1 expr 2 coeff 2..., vagyis sum = coeff 1 expr 1 + coeff 2 expr 2 +....
A klasszikus I Irányított körmentes gráf : A MAPLE-ben minden kifejezést egy reprezentál. A polinomok általában: sum expr 1 coeff 1 expr 2 coeff 2..., vagyis sum = coeff 1 expr 1 + coeff 2 expr 2 +.... A fenti expr k -k a polinom monomjai, melyek szorzatok: prod expr 1 exponent 1 expr 2 exponent 2...,
A klasszikus I Irányított körmentes gráf : A MAPLE-ben minden kifejezést egy reprezentál. A polinomok általában: sum expr 1 coeff 1 expr 2 coeff 2..., vagyis sum = coeff 1 expr 1 + coeff 2 expr 2 +.... A fenti expr k -k a polinom monomjai, melyek szorzatok: prod expr 1 exponent 1 expr 2 exponent 2..., tehát prod = expr exponent 1 1 expr exponent 2 2....
A klasszikus II
A klasszikus III Problémák a -gal: Fokszám-számítás, részkifejezés keresés, a gráfon rekurzívan végighaladva sok az elágazás, nagy a memória- és idő igénye: egy n-változós, t tagból álló polinomnál a fokszám O(nt) lépést igényel;
A klasszikus III Problémák a -gal: Fokszám-számítás, részkifejezés keresés, a gráfon rekurzívan végighaladva sok az elágazás, nagy a memória- és idő igénye: egy n-változós, t tagból álló polinomnál a fokszám O(nt) lépést igényel; Ha prod/7 x 1 y 3 z 1 szorzatot feldolgoztuk, a következő prod még akármi lehet, pl. x(x + y) 3 z, vagy sin(x 2 )cos(y) 3 z
A klasszikus III Problémák a -gal: Fokszám-számítás, részkifejezés keresés, a gráfon rekurzívan végighaladva sok az elágazás, nagy a memória- és idő igénye: egy n-változós, t tagból álló polinomnál a fokszám O(nt) lépést igényel; Ha prod/7 x 1 y 3 z 1 szorzatot feldolgoztuk, a következő prod még akármi lehet, pl. x(x + y) 3 z, vagy sin(x 2 )cos(y) 3 z a monomokkal végzett műveletek különösen lassúak, a prod-ban a változók nem rendezettek, a műveletigény négyzetes (háromváltozós monomok szorzása 200 órajel alatt)
A klasszikus III Problémák a -gal: Fokszám-számítás, részkifejezés keresés, a gráfon rekurzívan végighaladva sok az elágazás, nagy a memória- és idő igénye: egy n-változós, t tagból álló polinomnál a fokszám O(nt) lépést igényel; Ha prod/7 x 1 y 3 z 1 szorzatot feldolgoztuk, a következő prod még akármi lehet, pl. x(x + y) 3 z, vagy sin(x 2 )cos(y) 3 z a monomokkal végzett műveletek különösen lassúak, a prod-ban a változók nem rendezettek, a műveletigény négyzetes (háromváltozós monomok szorzása 200 órajel alatt) még a GPL-es konkurrencia is gyorsabb.
I Tekintsük a 9xy 3 z 4y 3 z 2 6xy 2 z 8x 3 5 polinomot megvalósítását a POLY szerkezetben:
II Magyarázat:
II Magyarázat: a változók egy rendezett sorozatban vannak;
II Magyarázat: a változók egy rendezett sorozatban vannak; egy tagban egy változó a kitevőjével együtt 16 bitet foglal;
II Magyarázat: a változók egy rendezett sorozatban vannak; egy tagban egy változó a kitevőjével együtt 16 bitet foglal; az xy 2 z 3 monom ábrázolása (6, 1, 2, 3), ahol a 6 a monom teljes fokszáma ez kiszámítva 6 2 48 + 2 32 + 2 2 16 + 3
Előnyök kompakt: pl. egy 3-változós polinom ábrázolásához tagonként 2 tömbbeli szó kell (egy 8-szavas láncolt gráfszerkezet helyett);
Előnyök kompakt: pl. egy 3-változós polinom ábrázolásához tagonként 2 tömbbeli szó kell (egy 8-szavas láncolt gráfszerkezet helyett); monomiálok: az összehasonlítás gépi szavak összehasonlítása, a szorzás összeadás, az osztás kivonás lesz (ha nincs túlcsordulás);
Előnyök kompakt: pl. egy 3-változós polinom ábrázolásához tagonként 2 tömbbeli szó kell (egy 8-szavas láncolt gráfszerkezet helyett); monomiálok: az összehasonlítás gépi szavak összehasonlítása, a szorzás összeadás, az osztás kivonás lesz (ha nincs túlcsordulás); az egyszerű függvények rendkívül gyorsak: indets(p), degree(p), has(f, x), type(f, polynom)
Előnyök kompakt: pl. egy 3-változós polinom ábrázolásához tagonként 2 tömbbeli szó kell (egy 8-szavas láncolt gráfszerkezet helyett); monomiálok: az összehasonlítás gépi szavak összehasonlítása, a szorzás összeadás, az osztás kivonás lesz (ha nincs túlcsordulás); az egyszerű függvények rendkívül gyorsak: indets(p), degree(p), has(f, x), type(f, polynom) sok bonyolultabb függvény is jóval gyorsabb a soros memóriaelrendezés miatt: deg(f, x), diff(f, x), coeff(f, x, i);
Előnyök kompakt: pl. egy 3-változós polinom ábrázolásához tagonként 2 tömbbeli szó kell (egy 8-szavas láncolt gráfszerkezet helyett); monomiálok: az összehasonlítás gépi szavak összehasonlítása, a szorzás összeadás, az osztás kivonás lesz (ha nincs túlcsordulás); az egyszerű függvények rendkívül gyorsak: indets(p), degree(p), has(f, x), type(f, polynom) sok bonyolultabb függvény is jóval gyorsabb a soros memóriaelrendezés miatt: deg(f, x), diff(f, x), coeff(f, x, i); nagy polinomok esetén sem keletkezik sok apróbb objektum
Megjegyzések az elv elég régi (ALTRAN, Buchberger);
Megjegyzések az elv elég régi (ALTRAN, Buchberger); csak egész együtthatós polinomokra működik;
Megjegyzések az elv elég régi (ALTRAN, Buchberger); csak egész együtthatós polinomokra működik; egy kitevő egy legfeljebb 16-bites szám lehet;
Megjegyzések az elv elég régi (ALTRAN, Buchberger); csak egész együtthatós polinomokra működik; egy kitevő egy legfeljebb 16-bites szám lehet; a változók száma legfeljebb 32 lehet (64 bites gépen);
Megjegyzések az elv elég régi (ALTRAN, Buchberger); csak egész együtthatós polinomokra működik; egy kitevő egy legfeljebb 16-bites szám lehet; a változók száma legfeljebb 32 lehet (64 bites gépen); a többi esetben a régi szerkezetet használja;
Megjegyzések az elv elég régi (ALTRAN, Buchberger); csak egész együtthatós polinomokra működik; egy kitevő egy legfeljebb 16-bites szám lehet; a változók száma legfeljebb 32 lehet (64 bites gépen); a többi esetben a régi szerkezetet használja; sok a háttérben zajló konverzió a két forma között.
eldöntendő kérdések csonkolt ábrázolás (TPS);
eldöntendő kérdések csonkolt ábrázolás (TPS); együttható függvény.