Engångsalgoritm

Inom datorer är en enpasssalgoritm eller enpasssalgoritm en strömningsalgoritm som läser dess indata exakt en gång. Det gör det genom att bearbeta objekt i ordning, utan obegränsad buffring ; den läser in ett block i en ingångsbuffert , bearbetar det och flyttar resultatet till en utmatningsbuffert för varje steg i processen. En engångsalgoritm kräver i allmänhet O ( n ) (se 'big O' notation ) tid och mindre än O ( n ) lagring (vanligtvis O (1)), där n är storleken på ingången. Ett exempel på en engångsalgoritm är Sondiks delvis observerbara Markov-beslutsprocessen .

Exempel på problem som kan lösas med engångsalgoritmer

Med vilken lista som helst som indata:

  • Räkna antalet element.

Med en lista med siffror:

Givet en lista med symboler från ett alfabet av k symboler, given i förväg.

  • Räkna antalet gånger varje symbol visas i ingången.
  • Hitta de mest eller minst frekventa elementen.
  • Sortera listan efter någon ordning på symbolerna (möjligt eftersom antalet symboler är begränsat).
  • Hitta det maximala gapet mellan två förekomster av en given symbol.

Exempel på problem som inte kan lösas med engångsalgoritmer

Med vilken lista som helst som indata:

  • Hitta det n :te elementet från slutet (eller rapportera att listan har färre än n element).
  • Hitta mittelementet i listan. Detta är dock lösbart med två pass: Pass 1 räknar elementen och pass 2 plockar ut den mellersta.

Med en lista med siffror:

  • Hitta medianen .
  • Hitta lägena (Detta är inte samma sak som att hitta den vanligaste symbolen från ett begränsat alfabet).
  • Sortera listan.
  • Räkna antalet objekt större än eller mindre än medelvärdet . Detta kan dock göras i konstant minne med två pass: Godkänd 1 hittar medelvärdet och godkänd 2 gör räkningen.

Tvåpassalgoritmerna ovan är fortfarande strömmande algoritmer men inte enpasssalgoritmer.

  1. ^ Schweikardt, Nicole. "One-Pass Algorithm" (PDF) . Hämtad 2021-07-01 . {{ citera webben }} : CS1 underhåll: url-status ( länk )
  2. ^ Pollett, Chris (2005-03-14). "En och två pass-algoritmer" (PDF) . Hämtad 2021-07-01 . {{ citera webben }} : CS1 underhåll: url-status ( länk )
  3. ^   Schweikardt, Nicole (2009), LIU, LING; ÖZSU, M. TAMER (red.), "One-Pass Algorithm" , Encyclopedia of Database Systems , Boston, MA: Springer US, s. 1948–1949, doi : 10.1007/978-0-387-39940-9_253 , ISBN 978-0-387-39940-9 , hämtad 2021-04-13
  4. ^ "Sondiks One-Pass Algorithm" . www.pomdp.org .