Logo Blogo

Con Kolivas reinventa il selection sort

Pubblicato: 02 ott 2011 da Giacomo Picchiarelli

cksortIl noto kernel hacker, dopo i suoi lavori sul nuovo scheduler BFS e dopo i recenti rilasci sull’algoritmo di compressione per file di grandi dimensioni lrzip, ha sentito l’irrefrenabile bisogno di reinventare la ruota rilasciando con licenza GPLv3 una variante migliorata dell’algoritmo di ordinamento selection sort.

L’idea di fondo consiste nell’accostare strutture dati ausiliarie all’ordinamento per selezione suddividendo gli elementi in tre categorie, al fine di aumentare le prestazioni nello scenario peggiore o in caso di dati ripetuti. Tralasciando i dettagli implementativi, la curiosità intellettuale di Con Kolivas ha portato comunque dei frutti inaspettati in un confronto con l’ottimo quick sort.

I test sono stati effettuati considerando un insieme di 10000 elementi in differenti condizioni statistiche: cksort è risultato nettamente superiore in tutte le configurazioni, eccezion fatta per dati casuali dove l’algoritmo paga in maniera davvero pesante: 658 millisecondi contro 51770 millisecondi. In tutti gli altri set di dati, a mio parere, cksort è stata una rivelazione nonostante il mio scetticismo iniziale: per configurazioni meno casuali o addirittura interlacciate risulta essere dalle 10 alle 6 volte più veloce di quicksort. Davvero notevole per un semplice esperimento.

Non soddisfatto di questa divagazione, Con Kolivas ha già annunciato che prossimamente si concentrerà su un algoritmo di ordinamento di tipo O(n log n) ottimizzato per il calcolo parallelo.

Via | ck Hacking

1 stelle2 stelle3 stelle4 stelle5 stelle (3 Voti | Media: 5 su 5)
condividi condividi
11 commenti

Commenti dei lettori

(Inserisci un commento - Nascondi commenti anonimi)
  • Profilo di barra

    barra

    02 ott 2011 - 20:56 - #1
    0 punti
    Up Down

    Ci fossero più sviluppatori come il buon Kolivas….

  • Profilo di hellview81

    hellview81

    02 ott 2011 - 22:31 - #2
    0 punti
    Up Down

    grande

  • qqwer

    03 ott 2011 - 10:10 - #3
    0 punti
    Up Down

    pensavo non ci fosse piu’ nulla da dire in fatto di sort e invece…. bravo Kolivas!!!!

  • brunoliegibastonliegi

    03 ott 2011 - 12:20 - #4
    0 punti
    Up Down

    BREVETTIAMOLO!!!!!!!!!!!!

  • anaoaea

    03 ott 2011 - 13:27 - #5
    0 punti
    Up Down

    Esistono svariati tipi di sort specifici e questo è fra quelli, nulla esclude che siano applicabili comunque a dati statisticamente casuali.
    Sta al programmatore capire quale algoritmo specifico di sort utilizzare se possibile, altrimenti utilizzare il più rapido, quello che usa meno risorse,ecc.

  • six110

    03 ott 2011 - 15:36 - #6
    0 punti
    Up Down

    Alla faccia dell’anestesista “appassionato di informatica”…

  • Profilo di nowhereman

    nowhereman

    03 ott 2011 - 16:26 - #7
    0 punti
    Up Down

    ha rilasciato un algoritmo di sorting sotto GPLv3?? wtf??

  • Kim Allamandola

    03 ott 2011 - 18:08 - #8
    0 punti
    Up Down

    @brunoliegibastonliegi #4 && nowhereman #7
    Io sarei più che favorevole a brevettare ogni singola riga di codice open col
    vincolo del brevetto al pubblico dominio (ovvero puoi usare gratis il brevetto
    solo a patto che l’uso che ne fai ricada a sua volta nel pubblico dominio),
    peccato costi troppo.

    Se si potesse fare Apple, Microsoft, Oracle ecc avrebbero finito non solo di
    monopolizzare il mercato ma anche di esistere non avendo nessuna soluzione
    del tutto proprietaria usabile!

  • 0xdeadbeef

    03 ott 2011 - 19:35 - #9
    0 punti
    Up Down

    Esercizio assai apprezzabile, ottimizza il caso peggiore per piccoli insiemi di dati, parzialmente ordinati o con ripetizioni utilizzando arbitrariamente 3 bucket.
    Ha quindi rilasciato un’implementazione sotto GPL3, ma da qui a dire che se avesse potuto lo avrebbe brevettato ce ne passa.

  • Profilo di barra

    barra

    03 ott 2011 - 20:45 - #10
    0 punti
    Up Down

    @Kim
    Da non esperto in materia ipotizzo: Il buon Kolivas ha sviluppato questo bel codice, non lo brevetta. Arriva MS che “copia” il codice e lo brevetta. Ok c’è la prior art ma come dicevi tu nell’opensource non ci sono i soldi per “combattere” ad armi pari con MS, che si fa?

  • Kim Allamandola

    03 ott 2011 - 22:18 - #11
    0 punti
    Up Down

    @barra #10
    Con la prior art sei a posto: il tuo codice originale è opensource quindi sia
    l’algoritmo che la paternità dello stesso è esplicita; il costo nel momento in
    cui la Microsoft ti citasse per violazione di brevetto sarebbe del tutto
    sostenibile dalla maggior parte dei singoli, dalla FSF, dalla community ecc.
    anzi porterebbe un po’ di soldi in cassa coi danni che seguono.

    Il costo non è la difesa attiva come nel caso sopracitato, il costo è a priori
    il brevetto per *impedire* giocando al loro stesso gioco che possano sfruttare
    il tuo lavoro e nel caso lo facciano il costo è il processo dove tu denunci la
    Microsoft o chi per essa e devi provare le tue accuse.

    Dimostrare la prior art su codice Opensource pubblico e pubblicato è immediato,
    dimostrare che un programma closed ti copia in violazione della tua licenza
    non lo è, almeno non lo è per piccole cose, se non ha copiato tanto ma solo
    piccole percentuali per programma complessivo.

    Il mio discorso è dato che questo mercato non può più vivere, persino aziende
    come Google chiedono a gran voce la fine dei brevetti software, che ricordo
    per l’ennesima volta IN EUROPA NON CI SONO, più spinte si danno per finire di
    levarlo dai piedi meno problemi, costi ecc ci sono!

    Ps nell’Opensource ci sono capitali in ballo belli grossi eh, non sono solo cose di
    programmatori hobbisti! Ci girano miliardi di dollari, aziende come Google, IBM,
    HP sino a Netgear, TomTom ecc *dipendono* in larga parte da progetti open e
    sono membri attivi della FSF ed altre organizzazioni con fondi finanziari, codice
    e portafoglio di brevetti. Ovviamente non brevettano ciò che non gli interessa
    né brevettano a nome di altri del codice!

L'email è richiesta ma non verrà mostrata ai visitatori.
Commenta questo articolo

Registrati per riservare il tuo nickname preferito su tutti i blog di Blogo e per caricare il tuo avatar. Se sei già registrato, effettua il login per usare il tuo nickname.

Si No
I commenti sono sottoposti alle linee guida per la moderazione.

Anteprima del commento