Portál AbcLinuxu, 25. dubna 2024 09:41


Dotaz: jednoznačná pozice v binární sekvenci

9.1.2014 08:10 johny
jednoznačná pozice v binární sekvenci
Přečteno: 311×
Odpovědět | Admin
Ahoj,

mám (web)kameru, která snímá pohyblivý pás a já bych chtěl ze snímku zjistit akutální pozici toho pásu. Napadlo mě, že na pás bych mohl vytisknout posloupnost černých a bílých pruhů, něco jako čárový kód. Zpracovat takový obraz už snad nějak zvládnu.

Budu ale potřebovat sekvenci jedniček a nul, která má takovou vlastnost, že nějaký podřetězec se v ní vyskytuje právě jednou. Například, pokud by kamera fotila čtveřici bitů, pak bych potřeboval nějakou takovouto sekvenci:

10001110110010100

Je vidět, že každá čtveřice (třeba 0101) má své jednoznačné určení. Schválně vynechávám 0000 a 1111, tam by na obrázku nebylo dost hran.

No a můj dotaz je, jak vygenerovat takovou sekvenci. Budu potřebovat cca 1000 bitů (pruhů). Umím to jen tupě, hrubou silou, pokus-omyl. Určitě to dělá každý a beztak se to i po někom jmenuje a nepochybně je to na wikipedii a já jen objevuju Ameriku :-)

Díky j.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Michy)
9.1.2014 10:25 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: jednoznačná pozice v binární sekvenci
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co tohle? Zřejmě se tomu říká De Bruijnova posloupnost.
I am always ready to learn although I do not always like to be taught. (W. Churchill)
14.1.2014 16:54 johny
Rozbalit Rozbalit vše Re: jednoznačná pozice v binární sekvenci
Moc děkuju! Zezačátku jsem myslel, že se mi to hodit nebude, protože sekvence obsahuje i dvě podskupiny stejných bitů. A navíc je cyklická. Ale naštěstí se to dá snadno upravit, protože právě ty nechtěné podskupiny jsou na začátku (řada nul) a na konci (řada jedniček). Takže stačí udělat tyto dva kroky: odstranit první a poslední bit, a pak na konec připojit sekvenci (b-1) nul. Takže například z této De Bruijnovy sekvence (pro b=4):
0000100110101111
vytvořím tuto (bude o (b-3) bitů delší)
00010011010111000
a to už je přesně to, co potřebuju (lze rozlišit 2**b-2 pozic). Pro jistotu jsem ověřil správnost pro různé délky sekvencí a funguje to. Ještě jednou dík!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.