Kommafri kode

I teoretisk informatikk , og spesielt i kodeteori , og også i bioinformatikk og spesielt i genetikk , er en kommafri kode (et begrep som kan oversettes som "kode uten komma") en blokkode eller ensartet kode. som ingen ord i koden er en intern faktor i produktet av to ord i koden.

Kommafrie koder er også kjent som “selvsynkroniserende blokkoder” fordi det ikke kreves synkronisering for å finne starten på et kodeord.

Historisk motivasjon

Den genetiske koden består av kodoner . Hvert kodon er en sekvens av tre nukleotider hentet fra et "  alfabet  " med fire bokstaver A, U, G, C ( adenin , uracil , guanin og cytosin ). Settet med 64 mulige kodoner danner en enhetlig kode. Hver av de mulige kodonene kan syntetisere en av de 20 naturlig forekommende aminosyrene . Ved begynnelsen av genetikk ble spørsmålet stilt om settet med kodoner til de 20 aminosyrene var en kommafri kode  ; faktisk er det maksimale antall elementer i en kommafri kode med lengde 3 med 4 bokstaver nøyaktig 20. Hvis det var sammenheng mellom aminosyrer og kodoner, kunne dekodingen gjøres uten synkronisering. Det er det faktisk ikke.

Definisjoner

En kode på et alfabet er et sett med ord uten ord på slik at ethvert produkt av ord fra blir unikt beregnet som et produkt: formelt, hvis

for og , da

og for alt .

En annen formulering av eiendommen er at submonoid generert av fritt genereres av , derfor er det et grunnlag for submonoid . Ordene som komponerer en kode kalles "kodenes ord", et produkt av kodenes ord er en "melding". Hvis er et alfabet i Bijeksjon med en bijective funksjon strekker seg naturlig inn i en morphism av på som, med noen ord om kollegaer meldingen

).

Søknaden er en "kodende morfisme", den omvendte applikasjonen er "dekoding".

En ensartet kode eller blokkode er en kode hvis alle ord har samme lengde, kalt lengden på koden. En kode med kommafri er en ensartet kode slik at intet kodeord er en intern faktor for produktet av to kodeord: Hvis det er for kodeord , er eller er det tomme ordet. Golomb og. al. gi eksplisitt følgende formulering: hvis og er elementer i koden , så er ordene , ..., i .

Størrelsen på en kommafri kode

Alle ordene i en kommafri kode er primitive . Den størrelse , det vil si antallet av elementer i en komma-fri kode av lengde blir derfor øket med antall primitive ord av lengde , som også er antallet periodiske krager i lengde  ; dette tallet er lik

for et alfabet med k bokstaver. Her er Möbius-funksjonen . Hvis vi noterer den maksimale størrelsen på en kommafri lengdekode på et bokstavalfabet , har vi det . Golomb et al. har vist at det er likhet hvis lengden på ordene i koden er merkelig og mindre enn 15; den generelle saken er bevist av Willard L. Eastman. Så vi har:

hvis er rart.

Willard L. Eastman gir også en algoritme for å bygge disse kodene. En annen algoritme er gitt av Robert A. Scholtz. For bokstaver og ord med lengde finner vi verdien 20, i samsvar med antagelsen til Crick et. al.

Knuth snakker om den første algoritmen i julepraten sin. Eastmans algoritme er utviklet av Knuth som et eksempel på backtracking . Det er koblinger mellom kommafrie koder og Hall-sett og Lazard-sett. Resultatet på maksimalitet er falskt for ord med jevn lengde, og ingen formel antas for kardinaliteten til en kommafri kode med jevn lengde n over k bokstaver.

Merknader og referanser

  1. Et ord er en indre faktor i et ord hvis det er for to ord som ikke er imøtekommende og .
  2. Golomb og Gordon Welch .
  3. (no) Universal Codes Commafree Donald Knuth (11. desember 2015) Universitetet i Stanford.
  4. Knuth 2017 , s.  9-10.
  5. Francis HC Crick , John Stanley Griffith og Leslie Orgel , "  Koder uten komma  ", Proceedings of the National Academy of Sciences i USA , vol.  43,1957, s.  416–421 ( les online , åpnet 16. desember 2017 ).
  6. De vakreste gale ideene innen vitenskap på Chemistry Blog
  7. Eastman 1965 .
  8. Scholtz 1969 .
  9. Perrin og Reutenauer 2018 .

Bibliografi

Relaterte artikler

Ekstern lenke

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">