3. fejezet - Intervallum-értékű számítások

Ebben a fejezetben formálisan is leírjuk az intervallum-értékű logikára épülő számítási paradigmát, majd a következő alfejezetekben megmutatjuk, hogyan használható ez a paradigma (elvben) nehéz feladatok hatékony megoldására kihasználva a benne rejlő masszív párhuzamosságot.

Felmerült az ötlet, hogy ha van egy új logikai rendszerünk, sőt a logikai műveletek mellett egyéb műveletek (ezeket hívják hagyományosan aritmetikai műveleteknek) is definiálva vannak, akkor miért ne készítsünk el egy olyan számítási paradigmát, ami ezt használja. Ezt az először 2005-ben bemutatott számítási paradigmát írjuk le a következőkben.

3.1. A klasszikus és az intervallum-értékű paradigma kapcsolata

A következő két alfejezetben azt mutatjuk meg, hogy számítási erejüket tekintve ekvivalens a klasszikus paradigma és az intervallum-értékű paradigma (ha csak véges sok intervallumkomponensből álló intervallumokból indul ki a számítás). Először azt mutatjuk meg, hogy az intervallum-értékű paradigmában a hagyományos számítások is elvégezhetőek.

3.1.1. A hagyományos számítógép modellezése

Ebben a részben megmutatjuk, hogy az intervallum-értékű paradigmával könnyen szimulálható a hagyományos számítógép Aritmetikai-Logikai Egységének (vagyis az ALU-nak) működése.

Tegyük fel, hogy a szimulálandó számítógép egy bájtja bitet tartalmaz. Vegyük az (atomi) intervallum-értékeket ( értékekre), ezek mindegyike a megfelelő ( )-edik bitnek fog megfelelni. Amikor a hagyományos számítógép ALU-ja valamilyen bájt(ok)on dolgozik, akkor most az intervallum-értékekkel dolgozó gép az adott bájtoknak megfelelő intervallum-értékekkel fog dolgozni.

A logikai műveletek szimulálása egyszerűen megy, ahogy a 2.4.4. alfejezetben megmutattuk, a megfelelő intervallum-értékeken működő operátorokkal.

Most megmutatjuk, hogy az ALU aritmetikai operátorait, az eltolásokat és az összeadást is elvégezhetjük az intervallum-értékekkel történő szimulációval. A hagyományos SHIFT operátorokhoz szükség van a bit-hossznyi eltolást segítő egykomponensű intervallum-értékre. Így a balratoló Left-shift egyszerű módon szimulálható az intervallum-értékek operátorával. Lássuk a right-shift szimulációját (a megfelelő intervallum-művelet nem töröl, hanem a „kimenő” rész bejön a intervallum másik végén. Ezért kombinálni fogjuk a két eltolás operátorát. Kis számítással megmutatható, hogy

éppen a kívánt eredményt fogja adni, vagyis olyan argumentumú jobbra-tolást ahol eltűnik a kitolt rész.

Most bevezetünk egy rövidítést: jelentse azt, hogy kétszer alkalmaztuk a jobbra-tolást a második operandussal egymás után: . Ezt a rövidítést bármely pozitív egész esetére bevezethetjük (esetünkben a -vel való eltolásnak maximum -szer van értelme egymás után).

Hasonlóan: ahol -szor alkalmaztuk az operátort.

Nézzük a legfontosabb aritmetikai operátor, az összeadás ( ADD ) kettes számrendszerbeli szimulációját.

Legyen és két olyan intervallum-érték, amelyek számértékeket fejeznek ki bitsorozatra visszakonvertálva. Az eltolás operátorokat fogjuk felhasználni a következőképpen: Először a túlcsordulásnak (a túlcsordulás biteknek) megfelelő intervallum-értéket konstruáljuk meg. A utolsó bitje

Itt jegyezzük meg, hogy ugyanazt jelenti, mintha lenne az eltolás operátor második paramétere. Hasonló állítás teljesül a műveletre is.

A következő iterációs módszerben, amiben összegyűjtjük a bitjeit, az változó értéke -től 2-ig csökken lépésenként 1-gyel

(Az utolsó érték, tartalmazza az összes átvitel (túlcsordulás) bitet, ami szükséges a számításhoz. A túlcsordulás bájt első bitje a valódi túlcsordulás bitet jelenti, ami az iteráció következő lépésében állna elő a értékkel. A hagyományos számítógépi értelemben vett összeg eredményének kiszámításához erre nincs szükség (ez a bit egy plusz információt tartalmaz, de nem az összeget tartalmazó bájtban van).

Végül a kizáró vagy (XOR) operátort használva kapjuk meg az és a összegét:

Ezzel tehát minden klasszikus művelet szimulálását megadtuk. Mivel a klasszikus számítógépek univerzálisak Turing értelemben, azt mondhatjuk tehát, hogy minden, ami kiszámítható az kiszámítható intervallum-értékekkel is.

Mint láttuk az intervallum-számítógép képes a klasszikus számítógépet szimulálni, így minden azzal kiszámítható függvényt kiszámítani. A szimulációban véges sok bitnyi információt tároltunk egy intervallum-értékben, maximum atomi intervallum-értéket felhasználva. Csak olyan intervallum-értékeket használtunk fel, ami a intervallum-értékből a logikai és az eltolás operátorok véges sokszori alkalmazásával előáll.

Mindezeket figyelembe véve azt mondhatjuk tehát, hogy az intervallum-számítógép a klasszikus számítógép egy absztrakt általánosítása. Ezenfelül, logikai műveletek végrehajtásakor az intervallum-számítógép úgy viselkedik, mintha végtelen (kontinuum) sok bit építene fel egy bájtot: a minden pontja megfelel egy-egy bitnek. Mivel egy processzor minőségét szokták a bájtjainak bitszámában mérni, az intervallum-értékű számítógép egy idealizált határesetet jelképez.

3.1.2. Lista-reprezentáció

Ebben a alfejezetben az intervallum-értékek lista-reprezentációját mutatjuk meg. Ezen reprezentáció segítségével a hagyományos számítógépeken is (egyszerűen) szimulálhatjuk az intervallum-értékű számításokat, amint látni fogjuk, az intervallumkomponensek végpontjait növekvő sorrendben nézve sorosan végrehajtva az egyes utasításokat (ezzel elveszítve a beépített párhuzamosság okozta hatékonyságot).

Számlistákkal fogjuk az intervallum-értékeket reprezentálni. A lista elemei kétfélék lesznek, aláhúzott és aláhúzás nélküli számok. Az aláhúzott értékek azokat a határpontokat fogják jelenteni, amelyek hozzátartoznak az intervallum-értékhez (zárt az atomi intervallumnak az adott értékű vége), a nem aláhúzott értékek pedig a nyílt határpontokat fogják jelenteni. A listákat is iteratív módon vezetjük be:

  • Első lépésként, minden atomi intervallumhoz az listát rendeljük.

  • Az indukciót az intervallum-értékekkel végezhető operátorok alapján végezzük. Legyen az lista-értéke (ahol ezek az értékek 0 és 1 közti (aláhúzott vagy aláhúzás nélküli) valós számok monoton nemcsökkenő sorrendben) valamilyen -re. Ennek a jelentése a következő: Minden értékre, ha van olyan , hogy , akkor -nél az karakterisztikus függvénye 1-et ad (egyenlőség esetén, csak ha aláhúzott értékről van szó). Ekkor mondjuk azt, hogy páratlan pozícióban vagyunk az listájában, mert páratlan sok olyan érték van a listában, ami kisebb (nem nagyobb), mint az aktuális . Ha ez a feltétel nem teljesül -re, akkor .

    Lássuk előbb a logikai operátorok hatását:

  • lista-reprezentációja: . Tehát a 0 és az 1 értékek bejönnek a lista két végére aláhúzva, az összes addigi érték pedig köztük marad. Viszont minden addig aláhúzott érték nem lesz aláhúzva, és ami az -ban nem volt aláhúzva, az a -ban alá lesz húzva (ezt a cserét jelzi a fölülhúzás jel a képletben).

  • Az intervallum-értékének lista-reprezentációja a következő: Párhuzamosan olvassuk az és a listáját monoton nemcsökkenő sorrendben. Ha páratlan pozícióba kerülünk bármelyik listában, akkor ezt a pontot változtatás nélkül az listába másoljuk onnan ahol most beléptünk. Amikor olyan ponthoz érünk, hogy mind az mind a listában kikerülünk a páratlan pozícióból, akkor ezt a pontot is változtatás nélkül másoljuk. (Tartsuk magunkat ahhoz, a konvencióhoz, hogy belépési pontként az aláhúzott érték alacsonyabbnak számít, mint ugyanaz az érték aláhúzásmentesen; míg páratlan pozícióból történő kilépéskor az aláhúzott érték számít magasabbnak.) Az és lista reprezentációs kiszámítását a 3.1. animáción is bemutatjuk.

    3.1. animáció - Intervallum-értékek lista reprezentációval.

  • Az intervallum-értékének lista-reprezentációja a következőképpen áll elő: Párhuzamosan olvassuk az és a listáját monoton nemcsökkenő sorrendben. Ha páratlan pozícióba kerülünk mindkettő listában, akkor ezt a pontot változtatás nélkül az listába másoljuk onnan ahol most beléptünk. Amikor olyan ponthoz érünk, hogy legalább az és a egyikének listájában kikerülünk a páratlan pozícióból, akkor ezt a pontot is változtatás nélkül másoljuk.

    Szükség van a listában egy karbantartó lépésre is. Ha a lista két egymást követő eleme megegyezik, akkor azokat kitörölhetjük a listából a következő eseteket kivéve:

    • mindkettő aláhúzott, és az első előfordulás páratlanadik helyen van a listában: (ez egy atomi intervallumot jelez, ami egy pont);

    • egyik érték sincs aláhúzva, és az első párosadik helyen szerepel: . (Ez azt jelzi hogy két egymást követő intervallumkomponens közt ez az egyetlen pont, a határpont nincs benne az intervallum-értékben.)

    Most nézzük a speciális intervallum-értékek lista-reprezentációját:

    A és a listaértékei: és az üres lista .

    Végül a nem-logikai operátorok hatása a lista-reprezentációban:

  • A , a legkisebb indexre, melyre , és 0 ha nincs ilyen index, így speciálisan az üres listára is.

  • a következő listával reprezentálható: (eltávolítva a maximális páros számú 0-t a lista elejéről).

  • listareprezentációjának elemei: , ahol minden 1-nél nagyobb érték helyett annak törtrésze használandó. Ezenkívül, ha valamely -re , akkor listába fel kell vennünk a 0 és 1 értékeket is (mindkettőt aláhúzottan). Végül, hogy megkapjuk a listareprezentációt az elemeket monoton nemcsökkenő sorrendbe kell rendeznünk.

  • A fraktál-szorzás műveleténél, tulajdonképpen az operátor definíciójában szereplő atomi intervallum-érték határait kell felsorolni, ahogy a definícióban tettük.

Az intervallum-értékeket reprezentáló listákra igaz az, hogy ugyanazt az elemet maximum kétszer tartalmazzák. A lista elemei tulajdonképpen azok a pontok, ahol az intervallum-érték karakterisztikus függvénye változik.