Hegedűs Péter

0 %
Hegedűs Péter
PHP Fejlesztő
  • Ország:
    Magyarország
  • Város:
    Gyöngyös
  • Kor:
    31
PHP
html
CSS
Js
WordPress
Python
  • Composer, Doctrine
  • Less, Bootstrap
  • jQuery, Ajax
  • GIT
Magyar
Angol

A Latin Négyzetekről

2022.01.15.

Mire is jó?

  • Számos területen alkalmazzák a latin négyzeteket. Az egyik a kísérletek tervezése, ahol az elrendezés segítségével az összes lehetséges kombináció végrehajtható.
  • A matematikában a kombinatorika, geometria és csoportelmélet területén hasznosítják.
  • A hírközlésben hibajavító kódokhoz használják.
Mivel az én területem az Informatika, így én értelem szerűen ilyen projektekben veszem hasznát. Csak hogy párat említsek: titkosítás, hashelés, digitális aláírás. Ezekben a témákban még várható tőlem néhány bejegyzés.

Mi is az a Latin négyzet?

Egy Latin négyzet megalkotásához három szabályt kell betartani:

1. Szükség van egy NxN méretű táblázatra. Ez itt például egy 5×5 méretű táblázat:

     
     
     
     
     

2. A táblázatot fel kell tölteni N db különböző szimbólummal. (Ugyanannyi különböző szimbólum kell, mint amennyi sora van a táblázatnak). Az előző példa alapján 5 különböző szimbólumra lesz szükség. Ez bármi lehet, de az egyszerűség kedvéért legyen az angol ABC első 5 betűje:

A, B, C, D, E

3. Ezekkel a szimbólumokkal úgy kell feltölteni a táblázatot, hogy ha beszúrunk egyet, akkor abban a sorban és oszlopban az a szimbólum már nem szerepelhet mégegyszer. (Mint egy Sudoku, ami igazából egy speciális latin négyzet)

Például a következő táblázat nem lehet Latin négyzet, akkor sem ha további szimbólumokkal töltjük fel, mivel a második sorban az A szimbólum kétszer szerepel:

     
AABEC
     
     
     

Továbbá a következő példa sem lehet Latin négyzet, mivel a harmadik oszlopában a B szimbólum háromszor szerepel:

  B  
  E  
  B  
  A  
  B  

Tehát egy Latin négyzet például így néz ki:

ACEDB
BDAEC
EABCD
CBDAE
DECBA

A szabályt már értem. Hogy csináljam?

Hát igen, a latin négyzet generálás már egy nehezebb téma, mivel már egy 5×5 négyzet előállításánál is hibába ütközhetünk. Azt tudom javasolni, hogy a beszúrandó elemek listáján haladjunk végig, és azokat helyezzük el a négyzetben úgy, hogy fentről lefelé haladva beillesztjük a különböző oszlopokba. Az első szimbólum beszúrása a legegyszerűbb lépés.

A    
  A  
 A   
   A 
    A

Még a második szimbólum beszúrása sem igazán bonyolult, bár itt már felléphetnek problémák. Itt látható, hogy az utolsó B szimbólumot már nem tudjuk sehová sem elhelyezni:

AB   
B A  
 A B 
  BA 
    A

Ennek ellenére nem kell pánikba esni. Ha ilyen problémával találkozunk, akkor valamelyik sorban helyezzük egy másik oszlopba az aktuális szimbólumot (a Latin négyzet szabályait betartva). Például a 4. sorban helyezzük át a B szimbólumot (5. oszlopba):

 12345
1AB   
2B A  
3 A B 
4  BAB
5    A

Ekkor az 5. sorba már be tudjuk illeszteni a B szimbólumot (3. oszlopba):

 12345
1AB   
2B A  
3 A B 
4   AB
5  B A

Előfordulhat, hogy több cserére lesz szükség a javításhoz, de mindig csak az aktuális szombólumot kell cserélni.

Ennyi elég is, ezzel a módszerrel biztosan elő lehet állítani egy Latin négyzetet.

Szuper. Viszont én nagy négyzetet szeretnék csinálni!

A fenti módszer valóban hatásos, de egy 256×256 négyzet előállítása már fejfájást tud okozni. Akik jártasak a programozásban, azok megpróbálkozhatnak a módszer implementáslásával.

Nem vagy jártas a programozásban vagy nincs kedved bajlódni vele?

Semmi gond, a Laquare API a segítségedre lesz:
https://rapidapi.com/peterhege/api/laquare

Az API kellőképpen gyors, a mögöttes algoritmus ~0.3 másodperc alatt állít elő egy 256×256 négyzetet, de az 1024-es mérettel is megbirkózik.

Ha szeretnéd egymás után többször ugyanazt a négyzetet használni, akkor adj egy pozitív számot a ‘state’ paraméternek. Amíg a ‘state’ és a ‘size’ ugyanaz, addig ugyanaz a négyzet kerül generálásra. Ha csak egy véletlenszerű négyzetet szeretnél, akkor csak a ‘size’ paramétert add meg.

Tudom, az API használat is igényel egy (nem is annyira) minimális informatikai tudást, de sajnos nincs kapacitásom egy felhasználói felület létrehozására.

Ha szeretnél felhasználói felületet, akkor itt tudsz támogatni (azzal is támogatsz, ha előfizetsz az API-ra):



Egy kis történelem

Varázslatos téma ez, mivel gyökerei az ókori szám-misztikára vezethetők vissza, ahol ennek az elrendezésnek varázserőt tulajdonítottak. Hogy mifélét, azt sajnos nem tudom, de egy, a témában jártas történész biztosan többet tudna erről mondani. Persze más szimbólumokat használtak, de az elrendezésnél betartották ezeket a szabályokat.

Az elnevezés Leonhard Eulertől származik, aki Latin betűket használt szimbólumokként. Ő már nem mint misztikumként használta ezt az elrendezést, hanem matematikai problémák megoldásához alkalmazta.

Bejegyezve itt: Latin négyzet
3 hozzászólás
  • maintest

    Hey I know this is off topic but I was wondering if you knew of any widgets I could add to my blog that automatically tweet my newest twitter updates.
    I’ve been looking for a plug-in like this for quite
    some time and was hoping maybe you would have some experience
    with something like this. Please let me know if you run into anything.
    I truly enjoy reading your blog and I look forward to your new updates.

    03:14 2024.01.25. Válasz
  • googletest

    Excellent web site you have got here.. It’s difficult to find
    high quality writing like yours these days. I seriously appreciate individuals like you!
    Take care!!

    01:12 2024.01.26. Válasz
Hozzászólás írása