Ja:
Winamp je imao odličan algoritam za shuffle tj. random puštanje pesama. Da li znaš koji je metod koristio?
Claude Sonet 3.5:
Winamp-ov algoritam za nasumično puštanje pesama (shuffle) je zaista bio poseban i često se spominje kao jedan od najboljih implementacija shuffle funkcije. Dozvolite mi da objasnim kako je radio.
Winamp je koristio modifikovanu verziju Fisher-Yates (ili Knuth) shuffle algoritma. Evo kako je to funkcionisalo:
- Prvo bi se napravila kopija cele playlist-e
- Zatim bi se primenio Fisher-Yates algoritam koji:
- Prolazi kroz niz od kraja prema početku
- Za svaku poziciju i, bira nasumičnu poziciju j između 0 i i
- Zamenjuje elemente na pozicijama i i j
Ono što je bilo posebno kod Winamp-ove implementacije je da je:
- Pamtio istoriju prethodno puštenih pesama kako bi izbegao ponavljanje
- Koristio težinske faktore koji su davali malu prednost pesmama koje dugo nisu puštene
- Izbegavao puštanje više pesama istog izvođača zaredom
Ovo je davalo utisak pravog “nasumičnog” puštanja, ali sa dovoljno “inteligencije” da izbegne očigledne probleme klasičnog random shuffle-a kao što su:
- Ponavljanje iste pesme nakon kratkog vremena
- Klasterisanje pesama istog izvođača
- Previše predvidivi obrasci
Sada većina modernih music player-a koristi slične algoritme, ali Winamp-ova implementacija je bila jedna od prvih koja je ovo uradila na zaista efektivan način.
Ja:
Zašto youtube nema tako efikasan shuffle?
Claude Sonet 3.5:
Problem YouTube-ovog shuffle algoritma je kompleksan iz nekoliko razloga:
- Tehnička arhitektura
- YouTube primarno nije dizajniran kao muzički plejer – to je video platforma
- Pesme/videi se strimuju sa servera, što znači da shuffle mora raditi sa udaljenim sadržajem
- Za razliku od Winampa koji je radio sa lokalnim fajlovima i mogao lako manipulisati celom plejlistom
- Ograničenja API-ja i keširanja
- YouTube mora balansirati između performansi servera i kvaliteta shuffle-a
- Često učitava samo deo plejliste u memoriju da bi uštedeo resurse
- Ovo rezultira u “pseudo-random” ponašanju gde se pesme često ponavljaju
- Poslovni razlozi
- YouTube Music je relativno nov proizvod u poređenju sa drugim streaming servisima
- Fokus je više na preporukama i discovery-ju nego na klasičnim plejer funkcijama
- Postoji teorija da namerno favorizuje određene pesme/izvođače iz komercijalnih razloga
- Algoritamska kompleksnost
- Winamp je mogao držati celu istoriju puštanja i metapodatke u memoriji
- YouTube mora ovo raditi distribuirano, preko više servera
- Teže je implementirati sofisticirane težinske faktore i pamćenje istorije
Rešenje bi moglo biti:
- Implementacija boljeg lokalnog keširanja metapodataka
- Dodavanje opcija za “pravi random” vs “pametni shuffle”
- Poboljšanje algoritma za analizu istorije puštanja
Ali s obzirom da većina korisnika ne prijavljuje ovo kao veliki problem, verovatno nije visoko na listi prioriteta za YouTube tim.