Kezdőoldal » Számítástechnika » Programozás » Hogyan tudom meghatározni...

Hogyan tudom meghatározni max. O (n^2) -es futási idővel egy sztring összes egyszeres zárójelezését?

Figyelt kérdés

pl. abc --> (a)(b)(c), (a)(bc), (abc), (ab)(c)


Előre is köszönöm!


2016. szept. 25. 00:30
1 2
 11/17 A kérdező kommentje:
Vannak módszerek, melyekkel rekurziófélét lehet úgy megvalósítani, hogy a korábbi állapotokat (részproblémákat) elmentjük, és az újabbakat azokból állítjuk össze. Valamiféle ilyen megoldás kell, hogy a kisebből induljak ki a nagyobb felé.
2016. szept. 25. 16:47
 12/17 anonim ***** válasza:
TEgyük fel, hogy el tudod menteni az összes előző állapotot (pl 5 hosszú stringek zárójelezésénél már rendelkezésre áll a 4 hosszúak zárójelezése), és egyetlen művelettel elő tudod varázsolni őket. No, n+1 hosszú stringhez 2^n darab zárójelezés tartozik, de neked már rendelkezésre áll az n hosszú stringek zárójelezése, azaz 2^(n-1) darab. Mennyi kell a programnak kiszámolnia? További 2^(n-1)-et. Az előző állapotok lementésével csak annyit érsz el, hogy 2^(n-1) elem kiszámítása helyett 2^(n-2) lesz. Ami még mindig exponenciális.
2016. szept. 25. 17:34
Hasznos számodra ez a válasz?
 13/17 A kérdező kommentje:
Jobb ötletem nincs...
2016. szept. 25. 17:46
 14/17 anonim ***** válasza:
Nem is lesz. Fogadd már el, hogy exponenciális igényű feladatot nem fogsz négyzetesen megoldani :D
2016. szept. 25. 18:28
Hasznos számodra ez a válasz?
 15/17 A kérdező kommentje:
Órán sok ilyesmi feladatot levezettünk rekurzívról dinamikusra, vagyis exponenciálisról négyzetesre (táblázatok segítségével)... persze azok megoldása egyszerűbb volt...
2016. szept. 25. 22:24
 16/17 anonim ***** válasza:
Az lehet, de nem minden feladat oldható meg O(n^2) futási idővel. Ez pl egy olyan feladat, és le lett írva a bizonyítása is.
2016. szept. 25. 22:36
Hasznos számodra ez a válasz?
 17/17 2*Sü ***** válasza:

Erről az jut eszembe, mikor fősulin vizsgán volt egy relatíve egyszerű feladat, írj pascal programot, ami kiírja 1-től 1000-ig a prímszámokat. Mindenki nekiállt valami algoritmus összehozni ki így, ki úgy. Egy srác a következő programot írta:

writeln('2');

writeln('3');

writeln('5');

writeln('7');

writeln('11');


Ott helyben javította a tanár a feladatokat, és mi is láttuk, ki mit írt. Mindenki felröhögött a srác megoldásán. A tanár ennyit mondott: „Mit röhögtök? Az volt a feladat, hogy a program kiírja a prímszámokat. Kiírta? Igen. Akkor a feladat teljesítve. Még gyorsabb is, mint a ti megoldásotok.”


Oké, de értelme volt a dolognak? Persze ha a proci a szűk keresztmetszet, lehet kvázi előre legyártott adatokkal dolgozva ezen segíteni, de cserébe több memóriát foglal, és/vagy nagyobb lesz a program. Jelen esetben annyi a lehetőség, hogy ugyan elvileg egy maximális hosszra lehet ezt csinálni, de 256 karakter hosszú stringnél is más csúnyán nagy táblázat kellene. Nem igazán látom értelmét a dolognak. A részoptimalizálással – hogy mondjuk 16 karakteres stringeket táblázatból vesz, de ott is össze kell kombinálni a részstringeket, amivel nem nagyon nyersz.

2016. szept. 26. 10:21
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!