.[ ČeskéHry.cz ].
Nejdelší nejvíce se opakující řetězec.
Jdi na stránku 1, 2  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Java / J2ME
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Folkow



Založen: 29. 07. 2007
Příspěvky: 61

PříspěvekZaslal: 20. prosinec 2008, 12:33:32    Předmět: Nejdelší nejvíce se opakující řetězec. Odpovědět s citátem

Ahoj,
momentálně řeším práci do školy, jejíž zadání jest napsat v Javě program, který, najde nejdelší opakující se podřetězec (maximálně 30 znaků) v řetězci, skládajícího se z milionu znaků, v co nejkratší době.

Prý se dá napsat takový program, který to zvládne za <= 3 sek. Confused

Většina řešení, která mě napadla, byla tupá, přičemž jejicht složitost byla exponenciální, tudíž nepoužitelná.

Pátral jsem dál a narazil jsem na suffixové stromy, které řeší tento problém s lineární složitostí, ale zrovna dvakrát jsem to nepochopil. Embarassed Evil or Very Mad

Existuje nějaká metoda, se kterou bych to případně vyřešil s logaritmickou složitostí?

Děkuji moc a rád uvítám Vaše rady a jakékoliv jiné příspěvky, které by mi mohly pomoct.

Cool
_________________
http://www.e-telka.cz | http://www.iphonethemeszone.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
OndraSej



Založen: 28. 07. 2007
Příspěvky: 766
Bydliště: Brandýs nad Labem

PříspěvekZaslal: 20. prosinec 2008, 13:03:39    Předmět: Odpovědět s citátem

Ano, suffixove stromy by to mohly resit efektivne.

Ne, logaritmicky algoritmus neexistuje a ani existovat nemuze... jak bys chtel vyhledat vsechny podretezce bez toho, abys ten retezec aspon jednou precetl?
_________________
http://trionteam.net
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 20. prosinec 2008, 13:35:51    Předmět: Odpovědět s citátem

Suffixové stromy nebo pole nejsou vůbec složité a mohly by se hodit. V podstatě si uděláš seznam všech sufixů (to je triviální):
kód:

vstup: CESKEHRY
sufixy:
0 CESKEHRY
1 ESKEHRY
2 SKEHRY
3 KEHRY
4 EHRY
5 HRY
6 RY
7 Y


a pak z toho buď vybuduješ strom tak, že postupně vkládáš slova. Slovo vložíš tak, že následuješ hrany odpovídající každému písmenu a když taková hrana není, vytvoříš ji. Takže ze slov ESKEHRY,EHRY,EHRAMI by vznikl tento strom:
kód:

*
+-- E
    +-- S
    |   +-- K
    |       +-- E
    |           +-- H
    |               +-- R
    |                   +-- Y
    +-- H
        +-- R
            +-- Y
            +-- A
                +-- M
                    +-- I


_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
tom.drin



Založen: 28. 07. 2007
Příspěvky: 65

PříspěvekZaslal: 20. prosinec 2008, 23:31:41    Předmět: Odpovědět s citátem

Přesně tuhle ulohu jsem řešil před rokem. (Nemáš náhodou Blocha?)
Asi né uplně šikovný řešení, ale můžeš si rozsekat vstup na stejně dlouhý překrývající se řetězce, seřadit je, odstranit unikátní a ty zbylý rozšířit o následující znak. Tohle opakuj dokud ti nezbudou jen ty nejdelší.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Folkow



Založen: 29. 07. 2007
Příspěvky: 61

PříspěvekZaslal: 21. prosinec 2008, 00:46:18    Předmět: Odpovědět s citátem

Je tomu tak, ať žije Mr. Bloch. Jakým způsobem jsi to řešil ty?
_________________
http://www.e-telka.cz | http://www.iphonethemeszone.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Houp



Založen: 28. 07. 2007
Příspěvky: 672

PříspěvekZaslal: 21. prosinec 2008, 12:32:57    Předmět: Odpovědět s citátem

Naštěstí dělám "normální" semestrálku.. tuhle bych řešil stylem, najít si někoho, kdo z toho měl A, okopčit to, občas trochu někde něco změnit a hotovo.

Jinak bacha na ten limit, co jsem slyšel, tak ty 3s to musí dát na dost starém stroji(jen několik set MHz procesor), takže když tobě to udělá pod sekundu, tak to ještě nemusí znamenat, že to udělá včas i jeho stroj.
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Folkow



Založen: 29. 07. 2007
Příspěvky: 61

PříspěvekZaslal: 21. prosinec 2008, 13:39:40    Předmět: Odpovědět s citátem

Ano, to máš pravdu, ale ikdyby to bylo nad 3 sekundy, tak stejně dostanu zápočet, akorát nebudu superliga no.. Very Happy
_________________
http://www.e-telka.cz | http://www.iphonethemeszone.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Yossarian



Založen: 28. 07. 2007
Příspěvky: 274
Bydliště: Šalingrad

PříspěvekZaslal: 21. prosinec 2008, 13:49:51    Předmět: Odpovědět s citátem

Houp napsal:
Naštěstí dělám "normální" semestrálku.. tuhle bych řešil stylem, najít si někoho, kdo z toho měl A, okopčit to, občas trochu někde něco změnit a hotovo.

[OT]V tom pripade doufam, ze te jeste tendle semestr vyrazi.[/OT]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Folkow



Založen: 29. 07. 2007
Příspěvky: 61

PříspěvekZaslal: 21. prosinec 2008, 13:51:50    Předmět: Odpovědět s citátem

Yossarian napsal:
Houp napsal:
Naštěstí dělám "normální" semestrálku.. tuhle bych řešil stylem, najít si někoho, kdo z toho měl A, okopčit to, občas trochu někde něco změnit a hotovo.

[OT]V tom pripade doufam, ze te jeste tendle semestr vyrazi.[/OT]


To víš, každej má své praktiky. Já si raději nechám poradit, ale vždycky to splácám dohromady sám.
_________________
http://www.e-telka.cz | http://www.iphonethemeszone.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Houp



Založen: 28. 07. 2007
Příspěvky: 672

PříspěvekZaslal: 21. prosinec 2008, 14:10:54    Předmět: Odpovědět s citátem

Yossarian napsal:

[OT]V tom pripade doufam, ze te jeste tendle semestr vyrazi.[/OT]


Proč?
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
tom.drin



Založen: 28. 07. 2007
Příspěvky: 65

PříspěvekZaslal: 21. prosinec 2008, 15:43:11    Předmět: Odpovědět s citátem

Folkow napsal:
Je tomu tak, ať žije Mr. Bloch. Jakým způsobem jsi to řešil ty?

Řešil jsem to tak ,jak jsem napsal výše. Na řazení jsem použil quicksort. Ale minulej rok bylo potřeba na jedničku čas pod 12 sekund. Já to měl na jeho oldschool kompu asi za 9 nebo 10s.
Jestli je teď potřeba na jedničku čas <3s tak to asi chce jinačí řešení.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Folkow



Založen: 29. 07. 2007
Příspěvky: 61

PříspěvekZaslal: 21. prosinec 2008, 16:02:40    Předmět: Odpovědět s citátem

tom.drin napsal:
Folkow napsal:
Je tomu tak, ať žije Mr. Bloch. Jakým způsobem jsi to řešil ty?

Řešil jsem to tak ,jak jsem napsal výše. Na řazení jsem použil quicksort. Ale minulej rok bylo potřeba na jedničku čas pod 12 sekund. Já to měl na jeho oldschool kompu asi za 9 nebo 10s.
Jestli je teď potřeba na jedničku čas <3s tak to asi chce jinačí řešení.


Mno stačí, že to budu mít =), pokusím se vyřešit dle výše napsaného...
_________________
http://www.e-telka.cz | http://www.iphonethemeszone.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1821

PříspěvekZaslal: 21. prosinec 2008, 20:26:49    Předmět: Odpovědět s citátem

Bacha aby to nebolo tak, ze to pani na FELe zmenili prave preto, aby nachytali tych, co odovzdaju minulorocne riesenia Razz
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Alenka



Založen: 28. 07. 2007
Příspěvky: 49

PříspěvekZaslal: 22. prosinec 2008, 11:45:30    Předmět: Odpovědět s citátem

offtopic: Nechodis nahodou na FEL? Smile ja jen ze spoluzak ma podobnou semestralku Smile jeste ze tohle me minulo

EDIT: Priste si blbko precti celej post nez neco napises Very Happy odpovedela jsem si sama po tom, co jsem si v jednom postup recetla jmeno "Bloch" Smile brrr
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Folkow



Založen: 29. 07. 2007
Příspěvky: 61

PříspěvekZaslal: 22. prosinec 2008, 11:49:08    Předmět: Odpovědět s citátem

Very Happy Jsem s Tondou ve skupině ...
_________________
http://www.e-telka.cz | http://www.iphonethemeszone.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Java / J2ME Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna