Binära automater.
Binary automates.

Till startsidan Föregående sida Innehåll

 

En binär automat är en kaosfunktion som skapar sierpinskytrianglar. För att göra detta utgår man från en rad med celler som sedan automatiskt uppdateras i en ny rad med celler som sedan i sin tur är fröet för nästa rad celler o.s.v. Cellerna är booleska variabler som endast kan ha värdena SANT (1) eller FALSKT (0) därav namnet binär automat.

Mönstret kan ha önskad bredd i antal celler och kan fortsätta att uppdateras i hur många rader som helst. Mönstret upprepas efter en tid, hur ofta beror på hur många celler som används och hur många och vilka celler som markerades på den första "fröraden".

Den nya raden celler får sina värden genom att man testar om dom två cellerna i den tidigare raden som ligger snett ovanför den cell som är aktuell har olika värde eller inte. Är dessa celler olika så sätts värdet i den aktuella cellen till SANT annars till FALSKT.

Mörkblå = FALSKT, ljusblå = SANT, grå = ej avklarad cell.

  OP0   OP1  
    OP    

Här har vi klarat av dom två första cellerna i den andra raden och skall testa om OP0 och OP1 är olika, i det här fallet så kommer cellen att bli ljusblå då OP0 och OP1 är olika.

    OP0   OP1
      OP  

Nu har vi kommit till nästa cell och finner där att OP0 och OP1 INTE är olika och svaret är sålunda FALSKT och cellen kommer att bli mörkblå.

      OP0  
        OP

I nästa cell som är den sista på raden utgör ett undantag. Här finns det ingen cell snett upp till höger, OP1 sätts i det läget automatiskt till FALSKT = mörkblå, i det här läget blir svaret därför FALSKT.

Likadant är det när den första cellen på raden testas fast då är det OP0 som automatiskt får värdet FALSKT. Svaret här SANT eller ljusblå.

  OP1      
OP        

För att lösa det här på ett snyggt sätt så kan man skapa en rad med celler som är två rutor längere än vad man tänkt att använda och får på så sätt en extra kantcell i varje ända av raden som alltid initieras till FALSK innan man testar i den nya raden. Sedan startar man på ruta ett i stället för noll och slutar att testa celler en ruta från slutet för att på så sätt aldrig markera kantcellerna.

Vi startar med att intiera den första raden med ett valfritt antal mörkblå och ljusblå celler. Det är fröet för kaosseien som skapas i dom följande raderna. Sedan startar vi algoritmen från den andra raden uppifrån och hämtar information från raden ovanför och räknar sedan raderna uppifrån och ned,

Det har ingen betydelse i vilken ordning vi markerar cellerna på den nya raden utan kan ta dom i slumpvis ordning om vå så önskar men räknar av dom från den ena kanten till den andra för bekvämlighetens skull.

Pseudokod :

Räkna RAD från andra raden till sista raden
  Räkna CELL från första cellen till sista cellen
    sätt [RAD, CELL] Till Inte [Likamed [[RAD - 1, CELL - 1], [RAD - 1, CELL + 1]]] 
  Nästa CELL
Nästa RAD

(- 1, -1) betyder i det här fallet "Den förra raden - cellen ett steg till vänster" eller OP0 och (-1, +1) betyder "Den förra raden - cellen ett steg till höger" eller OP1.

Funktionen : OP = Inte [OP] invertrerar biten och den sätts alltså till Sant (1) om utsagan innanför parenteserna är Falsk (0). Innanför parenteserna testas i det här fallet : OP0 är Likamed ( = ) OP1 eller om båda dom aktuella cellerna har samma bitvärde och det är ju det vi inte vill att dom skall ha så därför inverteras biten med negationen i funktionen Inte [OP]. Vad vi gör är att vi söker ett nekande svar på frågan är dom lika?

Fortsättning följer ...

Till startsidan Föregående sida Innehåll

Har du synpunkter på innehållet? Vill du rätta fel? Göra tillägg? Ställa frågor? då kan du kontakta Fractalus.