abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 23:55 | Nová verze

    V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 13.0 (Mastodon). Forgejo je fork Gitei.

    Ladislav Hagara | Komentářů: 0
    včera 14:22 | Bezpečnostní upozornění

    Společnost Eclypsium se na svém blogu rozepsala o bezpečnostním problému počítačů Framework. Jedná se o zranitelnost v UEFI umožňující útočníkům obejít Secure Boot.

    Ladislav Hagara | Komentářů: 0
    včera 02:33 | Nová verze

    Editor kódů Zed (Wikipedie) po macOS a Linuxu s verzí 0.208.4běží také ve Windows.

    Ladislav Hagara | Komentářů: 6
    15.10. 17:44 | IT novinky

    Apple dnes představil 14palcový MacBook Pro, iPad Pro a Apple Vision Pro s novým čipem M5.

    Ladislav Hagara | Komentářů: 20
    15.10. 13:55 | Nová verze

    Debian pro mobilní zařízení Mobian (Wikipedie) byl vydán ve verzi 13 Trixie. Nová stabilní verze je k dispozici pro PINE64 PinePhone, PinePhone Pro a PineTab, Purism Librem 5, Google Pixel 3a a 3a XL, OnePlus 6 a 6T a Xiaomi Pocophone F1.

    Ladislav Hagara | Komentářů: 2
    15.10. 13:11 | IT novinky

    Operátor O2 představil tarif Datamanie 1200 GB . Nový tarif přináší 1200 GB dat s neomezenou 5G rychlostí, a také možnost neomezeného volání do všech sítí za 15 Kč na den. Při roční variantě předplatného zákazníci získají po provedení jednorázové platby celou porci dat najednou a mohou je bezstarostně čerpat kdykoli během roku. Do 13. listopadu jej O2 nabízí za zvýhodněných 2 988 Kč. Při průměrné spotřebě tak 100 GB dat vychází na 249 Kč měsíčně.

    Ladislav Hagara | Komentářů: 7
    15.10. 12:33 | Bezpečnostní upozornění

    Byly publikovány informace o útoku na zařízení s Androidem pojmenovaném Pixnapping Attack (CVE-2025-48561). Aplikace může číst citlivá data zobrazovaná jinou aplikací. V demonstračním videu aplikace čte 2FA kódy z Google Authenticatoru.

    Ladislav Hagara | Komentářů: 1
    15.10. 07:11 | Zajímavý projekt

    Free Software Foundation (FSF) spustila projekt Librephone, jehož cílem je vytvoření svobodného operačního systému pro mobilní telefony. Bez binárních blobů.

    Ladislav Hagara | Komentářů: 11
    14.10. 16:44 | Nová verze

    Byla vydána verze 7 s kódovým název Gigi linuxové distribuce LMDE (Linux Mint Debian Edition). Podrobnosti v poznámkách k vydání. Linux Mint vychází z Ubuntu. LMDE je postaveno na Debianu.

    Ladislav Hagara | Komentářů: 0
    14.10. 16:33 | Nová verze

    Byl vydán Mozilla Firefox 144.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Vypíchnout lze lepší správu profilů. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 144 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (38%)
     (46%)
     (19%)
     (21%)
     (24%)
     (18%)
     (21%)
     (18%)
     (18%)
    Celkem 231 hlasů
     Komentářů: 14, poslední 14.10. 09:04
    Rozcestník

    Dotaz: Hledání nejdelší symetrické části řetežce

    Arses avatar 21.11.2006 21:37 Arses | skóre: 4 | blog: arses
    Hledání nejdelší symetrické části řetežce
    Přečteno: 208×
    Zdravim, potřeboval bych poradit s tímto problémem, jak najít nejdelší symetrickou část (třeba 1235555321) a podobně. Potřebuju co nejméně časově náročnou verzi, napadlo mě jenom toto:
    .
    .
    delka = 1;
    for (i = 0; i < n-1; i++)
       for (j = i+1; j < n; j++) {
          sym = 1;
          for (k = 0; i+k < j-k; k++)
             of (a[i+k] != a[j+k])
                 sym = 0;
          if (sym && (j-i+1 > delka))
             delka = j-i+1;
        }
    .
    .
    .
    
    A to je časově poměrně dost náročný

    Jinak n je délka řetězce a délka je velikost onoho nejdelšího úseku... ostatní je jasný bych řekl...

    Díky moc za každou radu

    Odpovědi

    Arses avatar 21.11.2006 22:14 Arses | skóre: 4 | blog: arses
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Ještě dodám, že nezáleží na jazyku, jde mi čistě jen o ten algoritmus, C sem vzal jenom jako příklad...
    21.11.2006 22:48 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    To je domácí úkol nebo nějaká soutěž?
    Arses avatar 22.11.2006 07:04 Arses | skóre: 4 | blog: arses
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Ani jedno, domácí úkol byl napsat to... to sem udělal, ale nejsem s tim spokojenej....
    Matyáš Dvořák avatar 21.11.2006 22:58 Matyáš Dvořák | skóre: 13
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    asi bych pouzil neco ve stylu grep '^\(.\)\(.\).\2\1$' soubor
    21.11.2006 23:03 moira | skóre: 30 | blog: nesmysly
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Tree/Suffix/

    Zacatek + odstavecek o hledani palindromu. Muzete dosahnout narocnost O(n) ;)
    Překladač ti nikdy neřekne: "budeme kamarádi"
    Arses avatar 22.11.2006 07:07 Arses | skóre: 4 | blog: arses
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Díky moc, jdu se tim prokousat ;-)
    22.11.2006 12:17 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    #include <stdio.h>
    
    int main(int argc, char **argv) {
    	char *start, *end, *lpos, *i, *j;
    	int lhalf = 0;
    	if (argc >=1 ) return 1;
    	start = argv[1];
    	for(end = start; *end; end++);
    	for(lpos = i = start; i < end - lhalf; i++) {
    		for(j = i; j>=start && (i + 1 + (i - j) < end) && *j == *(i+1+(i-j)); j--);
    		if( i-j > lhalf) {
    			lhalf = i-j;
    			lpos = j+1;
    		};
    	};
    	if(lhalf) {
    		*(lpos + 2*lhalf) = 0;
    		printf("%s\n", lpos);
    		return 0;
    	} else {
    		return 1;
    	}
    }
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    22.11.2006 12:24 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Zatr. Samozřejmě tam má být
    	if (argc <=1 ) return 1;
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    22.11.2006 09:52 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Jo hezká složitost O(n). Mám fakt rád tyhle akademické "počítání" složitosti. A režije na vytváření toho stromu, kopírování v paměti a podobně je vosk? Teorie je to hezká, ale skutek utek. Složitost O(n) to má leda tak na papíře.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    22.11.2006 12:30 moira | skóre: 30 | blog: nesmysly
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Slozitost na vytvoreni stromu je take O(n), je to v tom clanku :)
    Překladač ti nikdy neřekne: "budeme kamarádi"
    22.11.2006 14:13 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Vážně? Jseš si tím tak jistý, že by jsi za to dal ruku do ohně? Tak se na to mrkněme pod drobnohledem. Takže v ukkonen95() se nám n krát volá funkce upDate() a canonize(). A copak to tu máme uvnitř funkce upDate()? Na dvou místech se nám tu volá funkce test_and_split() to jednou doknce uvnitř cyklu! Takže jen funkce test_and_split() je volána více než O(n). No pak tu máme další volání funkce canonize() uvnitř funkce upDate() a zase uvnitř cyklu! Funkce canonize() je opět volána vícě než O(n)! No a aby to nebylo málo, tak funkce canonize() opět obsahuje cyklus z čehož vyplývá, že ta část uvnitř cyklu se provede ještě víckrát než samotná funkce canonize(), která sama o sobě není volána O(n), ale víckrát. Takže prdlačky švagrová. Ten algoritmus není O(n) ani kdybych zavřel obě oči a praštil se palicí do hlavy. Dokonce bych ho typoval tak na O(n^3) ná základě tohoto rozboru. Když to srovnám s kódem co jsem poslal, který má nejhorší odhad (n+2)*n/8 tedy O(n^2) a to počítám opravdu ten nejhorší případ. Nesmíš taky věřit všemu co se kde píše. Ono takhle akademicky to vypadá dobře, ale když jdeš po tom algoritmu do důsledku tak se nám tam n krát zavolá cosi co má v sobě cyklus uvnitř něhož se nám zase zavolá ? krát cosik a to cosik má v sobě cyklus, která může být zavolán m krát, přičemž hodnota m je nějaká konstanta*n. Tedy přinejmenším O(n^2), ale taky možná O(n^3) protože neznám ?. Abych pravdu řek, nechce se mi po tom pátrat, ale vzhledem k tomu, že je to cosi se stromy, tak tomu dejme O(n^2*log2n) ať nežeru. O(n) fakt ani omylem.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    22.11.2006 14:33 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Až na to, že všechny vaše úvahy jsou jen horní odhady…
    22.11.2006 15:12 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Vážně? Ve funkci ukkonen95() jsou funkce upDate() a canonize() volány vždy n krát. Uvnitř funkce upDate() je funkce test_and_split() vždy volána nejméně jednou, ale může být i více krát. Stejně tak funkce canonize() je vždy n krát volána přímo z ukkonen95() a může být volána i z upDate() a to i více než jednou. Takže tu máme dvě funkce, které mohou být volány n*a, kde a není nikdy menší než 1, ale a s velkou pravděpodobností závisí na složitosti stromu tedy asi na O(log2n). No a v samotné funkci canonize() máme cyklus, který závisí na délce subřetězce, tedy na n. Takže tvrdit o něčem takovém, že to má složitost O(n), je prostě lež jako věž. To neukecáte, ani kdyby jste se na hlavu postavil. Jen proto, že se v javě až tak nevyznám, jsem možná přehlédl ještě nějaké to kopírování v paměti zase se složitostí O(n), které nám z toho všeho pěkně udělají nejméně O(n^2) jako když vyšije. Mužete to milionkrát okecat, ale O(n) to prostě není.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    22.11.2006 15:19 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Nehodlám nic ukecávat, to, co jste předvedl, nemá s důkazem dolního odhadu časové složitosti nic společného a silácké výrazy typu "prdlačky švagrová" nebo "ani kdybych zavřel obě oči a praštil se palicí do hlavy" tomu nijak nepomohou. Nevidím sice na první pohled, že to je lineární, ale stejně tak bych si nedovolil na základě tak chatrných úvah, jako jsou ty vaše, rezolutně prohlášovat, že to lineární není.
    22.11.2006 16:03 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Nehodlám nic ukecávat, to, co jste předvedl, nemá s důkazem dolního odhadu časové složitosti nic společného a ...
    Ahá, takže ono jde o dolní odhad složitosti, tak to ten můj algoritmus má taky dolní odhad O(n). Pro řetězec neobsahující žádnou dvojici za sebou jdoucích stejných znaků se provede právě n-1 porovnání. Aha, takže proč to dělají tak složitě? Ten můj algoritmus je mnohem jednodužší a má stejný dolní odhad složitosti :-)
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    22.11.2006 16:11 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Achich ouvej. Chcete-li vyvrátit tvrzení, že univerzální horní odhad složitosti je O(n), potřebujete najít nějakou posloupnost vstupů, pro niž je dolní odhad složitosti není O(n), tj. označíme-li jejich složitosti t_n, posloupnost t_n/n není omezená. Takže chcete-li vyvrátit horní odhad (a právě o to se celou dobu snažíte), potřebujete udělat dolní odhad. Dolní odhad jste sice udělal, ale dokázal jste pouze cn, což nic nevyvrací, všechny další výroky, že je to určitě n log n a pravděpodobně n^2, jsou jen mlha, ne důkaz.
    22.11.2006 15:22 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Ještě doplnění: pozorný čtenář si toho jistě všimne sám, ale pro ty méně pozorné zdůrazním, že jediné, co jste svou v tomto příspěvku úvahou skutečně dokázal, je skutečnost, že časová složitost je alespoň O(n), což není nijak v rozporu s příspěvkem, do kterého jste se tak vehementně obul…
    22.11.2006 16:22 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Pro ty méně i více pozorné bych ještě dodal, že přehození pojmů "horní" a "dolní" odhad celou tuto diskusi naprosto dorazilo. Doporučuji začít znovu.
    22.11.2006 16:24 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Aha, už vidím podrobnější vysvětlení, teď to dává smysl :-)
    22.11.2006 15:12 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    Mám fakt rád tyhle akademické "počítání" složitosti.
    V tom pripade vam doporucuji toto PDF.
    never use rm after eight
    22.11.2006 15:24 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Hledání nejdelší symetrické části řetežce
    To je všechno hezké, ale ten algoritmus nemá složitost O(n), ale větší.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.