Kezdőoldal » Számítástechnika » Programozás » Milyen algoritmussal lehetne...

Milyen algoritmussal lehetne az alábbi feladatot megoldani?

Figyelt kérdés

A feladat:


---------

Minden DNS szekvencia leírható olyan karaktersorozattal, amely csak az A, C, G és T karaktereket

tartalmazhatja. Brit tudósok rájöttek, hogy egy DNS szekvencia mutációt okozhat, ha valamely

benne szereplő karakter darabszáma legalább a DNS szekvencia hosszának a fele.

Készíts programot, ami kiszámítja a vizsgált DNS szekvenciának a leghosszabb összefüggő mutáns

részsorozatát!


Bemenet

A standard bemenet első és egyetlen sora tartalmazza a vizsgált DNS szekvenciát, melynek

hossza legfeljebb 200 000.


Kimenet

A standard kimenet első sorába egy számot kell írni, mely megadja, hogy milyen hosszú a

leghosszabb összefüggő mutáns részsorozata a vizsgált DNS szekvenciának!


Példa:


Bemenet:

CTTAGGCG


Kimenet:

6


Korlátok

Időlimit: 0.3 mp.

---------


A példa értelmezése:


Bemenet: CTTAGGCG


ebből "TAGGCG" hossza 6, benne a 'G' karakter 3.

a szakasz fele 6 / 2 = 3

mivel 3 >= 3 ezért ez egy mutáns szakasz.

kimenet: a szakasz hossza, 6.


miért nem mutáns a "TTAGGCG"?

a szakasz hossza 7, ennek fele viszont 4.

benne a 'G' karakter 3.

mivel 4 >= 3 nem igaz, ezért ez nem mutáns. A fenti a helyes megoldás.


Megjegyzés:


A feladatot már megoldottam így nem kódot kérek. Arra lennék kíváncsi, hogy ti esetleg milyen (eltérő) algoritmussal vagy ötlettel kezdenétek hozzá. Figyelni kell arra, hogy a benet hossza 200 000 karakter, ez esetben is 0.3mp alatt kell lefutnia a programnak. Gyorsnak kell lennie, itt inkább ezen van a hangsúly.



2021. nov. 18. 10:31
1 2
 1/18 anonim ***** válasza:
0%
Számomra érthetetlen, hogy miért pont a TAGGCG-t vizsgálja. Mintha hasára ütött volna az illető. Ameddig ez nincs normálisan elmagyarázva, hogy mi alapján néz szakaszokat, addig nehéz bármit is csinálni a feladattal.
2021. nov. 18. 10:56
Hasznos számodra ez a válasz?
 2/18 anonim ***** válasza:
21%

"Figyelni kell arra, hogy a benet hossza 200 000 karakter, ez esetben is 0.3mp alatt kell lefutnia a programnak. Gyorsnak kell lennie, itt inkább ezen van a hangsúly."


Számomra pedig ez az érthetetlen. Ha "O" (ordó)-val adja meg a "futásidőt" akkor oké, de a 0.3mp programnyelv és hardver ismeretének hiányában értelmezhetetlen. (Sőt, még úgy is, mert ha mellette videót konvertál a proci, akkor garantálom, hogy a futásidő megnő, mivel várakozni fog. :D) Elég fura feladat ez szerintem is.

2021. nov. 18. 11:04
Hasznos számodra ez a válasz?
 3/18 A kérdező kommentje:

#1 Az összes lehetséges szakaszt vizsgálni kell.


Bemenet: CTTAGGCG


Akkor ezeket vizsgálni kell:


C, CT, CTT, CTTA, CTTAG, CTTAGG, CTTAGGC, CTTAGGCG

T, TT, TTA, TTAG, TTAGG, TTAGGC, TTAGGCG

T, TA, TAG, TAGG, TAGGC, TAGGCG

A, AG, AGG, AGGC, AGGCG

...


ezek között van a "TAGGCG" is, amely a leghoszabb ilyen szakasz, amely mutáns.


#2

A feladatot egy szerver teszteli le. Azon kell 0.3mp alatt eredméynek lennie.


Ha egy átlagos gépen, pl. a te gépeden lefut 0.3mp alatt, akkor már elég gyors az algoritmus.

2021. nov. 18. 11:14
 4/18 anonim ***** válasza:
22%

#2: Online versenyeken szokott ilyen megkötés lenni, ahol a saját szerverükön fut a kód, hogy mennyi az időlimit. Az sem teljesen egzakt, de ott legalább van értelme. De simán csak annyit kijelenteni, hogy ennyi meg annyi idő alatt fusson le, az értelmetlen. Mi van, ha nálam lefut, az iskolai gépen meg nem? Vagy fordítva: ad a kedves tanerő egy működő megoldást, én előveszem a 486-osomat, lefuttatom rajta, és lám-lám, könnyen lehet, hogy piszkosul túllépi az időlimitet.

De oké, értem, hogy ez akart az ösztönző rész lenni, hogy ne olyan algoritmussal dolgozz, ami 2 napig fut. :) Volt nekem ebből afférom főiskolán. :D A feladatot megoldottam, viszont a tanár által beírt adatokkal több, mint egy órán át dolgozott. Nem fogadta el jónak, mivel túl lassú. (Én meg az érvelését nem fogadtam el, de ez már másik történet, akkoriban kevésbé voltam diplomatikus emberke.)


Viszont maga a feladat sem érthető. (Vagy csak én vagyok túl dekoncentrált így influenzásan, kialvatlanul?)

"egy DNS szekvencia mutációt okozhat, ha valamely benne szereplő karakter darabszáma legalább a DNS szekvencia hosszának a fele" - Ez egy egyszerű megszámolás tétel lenne. Annyi nehezítéssel, hogy 4 számlálód van, mindegyik bázisra (karakterre) egy. Végiglépkedsz az elemeken, ha "A", akkor annak a számlálóját növeled, ha "T", akkor azét, stb. Ha bármelyik számláló (igaz, egynél több nem lehet egyszerre) a bemeneti karakterlánc hosszának legalább fele, akkor mutálódhat a DNS, különben nem. (Egyébként érdekelne, hogy ennek tényleg van-e biológiai alapja, vagy csak egy random elmeszülemény?)

"Készíts programot, ami kiszámítja a vizsgált DNS szekvenciának a leghosszabb összefüggő mutáns részsorozatát!" - Ennek viszont abszolút nincs semmi értelme. Mi az, hogy mutáns részsorozat? Sehol nincs ez definiálva.

2021. nov. 18. 11:20
Hasznos számodra ez a válasz?
 5/18 anonim ***** válasza:
0%
Akkor ez a feladat lehetetlen. Nincs olyan algoritmus, ami ilyen gyorsan lefut 200 000 karakter esetén... A szerver sem jó, mert az nem konkrét hardver... Kétlem, hogy ezt nem te találtad ki.
2021. nov. 18. 11:21
Hasznos számodra ez a válasz?
 6/18 anonim ***** válasza:
0%

Ne értetlenkedjetek már. Kicsit értelmetlenül van megfogalmazva, de rá lehet jönni mit kér a feladat. Biztos nem is lehetetlen.


Engem inkább az érdekelne, hogy a kérdező milyen algoritmussal oldotta meg, ha már attól eltérő megoldásokat kér.

2021. nov. 18. 11:29
Hasznos számodra ez a válasz?
 7/18 anonim ***** válasza:
18%

#5 Most nem kötözködésképp, de most te is csak a hasadra csaptál ugye? "Nincs olyan algoritmus, ami ilyen gyorsan lefut 200 000 karakter esetén..."


Gondolom ő ismeri a konkrét hardvert, de amúgy nem lehetetlen.

Viszont itt felmerült bennem akkor, hogy az algoritmust tekintve nem csak pszeudokód szintjén kell(ene) gondolkodni, hanem konkrét programnyelvet figyelembe véve, több szálon futó algoritmust kellene alkotni.

2021. nov. 18. 11:32
Hasznos számodra ez a válasz?
 8/18 anonim ***** válasza:
0%
3/10-ed mp. alatt 200000*200000 vizsgálat? Aha, jó... Akkor halljuk a megoldásodat.
2021. nov. 18. 11:33
Hasznos számodra ez a válasz?
 9/18 anonim ***** válasza:
0%
A #6-osnak irtam.
2021. nov. 18. 11:33
Hasznos számodra ez a válasz?
 10/18 anonim ***** válasza:
14%

Nem ertem olyan emberek miert valaszolgatnak, akik ertelmezni sem kepesek egy ilyen egyszeru feladatot.

#5-on meg fel is rohogtem :)


Kerdezo, en igy csinalnam:

Nevezzuk a bemeneti stringet S-nek. Vegig megyek S-en, osszeszamolom melyik karakterbol hany db van, ezek maximumat nevezzuk M-nek.

A megoldas min(M * 2, length(S)).

O(n) time, O(1) space.

2021. nov. 18. 11:42
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, 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!