Quicksort ha spiegato ai bambini


16

L'anno scorso stavo leggendo un fantastico articolo su "Meccanica quantistica per la scuola materna" . Non è stata una carta facile.

Ora, mi chiedo come spiegare quicksort con le parole più semplici possibili. Come posso provare (o almeno fare un'onda) che la complessità media è e quali sono i casi migliori e peggiori per una classe di scuola materna? O almeno nella scuola elementare?O(nlogn)


9
Vuoi dimostrare la complessità di quicksort ... a un gruppo di bambini di tre anni ...? In bocca al lupo.

2
Cerca di usare il loro linguaggio, il problema è che è molto limitato e biologicamente non sono pronti per questa complessità. Seguire i passaggi come in un algoritmo non è completamente sviluppato fino a quando non hanno sei o sette anni. Stai affrontando una sfida biologica.

4
In realtà non lo consiglierei a Kindergarten, ma cercare su YouTube per quicksort (e altri algoritmi di ordinamento) fornisce molte buone rappresentazioni. Personalmente preferisco quelli di danza popolare hugariana. Vedi youtube.com/watch?v=ywWBy6J5gz8 .

2
L'articolo di cui parli ha un titolo accattivante ma contenuti molto complessi come il modello spaziale Hilbert, quindi cosa cerchi davvero?

2
Vorrei rinunciare a tentare di spiegare pienamente quicksort, e invece proverei a dare ai bambini una comprensione di "dividi e conquista". Anche se non sono abbastanza grandi per stimolare completamente la ricorsione, l'idea di spezzare un grosso problema in piccoli problemi sarebbe davvero preziosa. Personalmente prenderei una solida comprensione di base del divide-and-conquor ogni giorno su un'idea incompleta di algoritmi complessi.
Vincent Gable,

Risposte:


14

Alla base, Quicksort è questo:

  1. Prendi il primo oggetto.
  2. Sposta tutto a meno di quel primo elemento a sinistra di esso, tutto a destra (assumendo un ordine crescente).
  3. Recurse su ogni lato.

Penso che ogni bambino di 4 anni sul pianeta potrebbe fare 1 e 2. La ricorsione potrebbe richiedere qualche spiegazione in più, ma non dovrebbe essere così difficile per loro.

  1. Ripeti sul lato sinistro, ignorando il diritto per ora (ma ricorda dov'era il centro)
  2. Continua a ripetere con il lato sinistro fino a quando non arrivi a nulla. Ora torna all'ultimo lato destro che hai ignorato e ripeti il ​​processo lì.
  3. Una volta esauriti i lati destro e sinistro, il gioco è fatto.

Per quanto riguarda la complessità, il caso peggiore dovrebbe essere abbastanza semplice. Considera solo un array già ordinato:

1 2 3 4
  2 3 4
    3 4
      4

Abbastanza facile da vedere (e dimostrare) che è .12n2

Non ho familiarità con la prova del caso medio, quindi non posso davvero dare un suggerimento per questo. Si potrebbe dire che in una matrice non ordinata di lunghezza la probabilità di scegliere l'oggetto più piccolo o più grande è 2l , quindi ...?2n


Forse la ricorsione (d & c) è la migliore e più naturalmente spiegata con il parallelismo intrinseco.
Raffaello

2
Sarei d'accordo Il mio istinto era quello di utilizzare una metafora di dare le due pile ai tuoi amici su cui lavorare.
Christian Mann,

3
Sostengo che i bambini di quattro anni sono (con possibili eccezioni) fondamentalmente incapaci di comprendere la ricorsione, indipendentemente da quanto ci si provi. Il cervello semplicemente non è abbastanza maturo. Esistono fasi ben definite nello sviluppo del cervello, ad esempio il punto in cui i bambini diventano autocoscienti, in cui diventano consapevoli delle conseguenze future delle azioni attuali e in cui comprendono prima il sarcasmo che segue un programma strettamente controllato che non può essere riordinato volontariamente e è altamente conservato tra i bambini. Credo che la comprensione della ricorsione rientri nella stessa categoria.
Konrad Rudolph,

16

Quicksort è in realtà abbastanza facile da capire, se comprendono il conteggio e la divisione di base per 2. Crea un mazzo di X schede flash, numerale 1 - X e mescolale. Quindi ecco la spiegazione:

OK, abbiamo questo mazzo di (diciamo 20) carte qui. Vogliamo metterli in ordine, quindi 1 è prima, quindi 2, quindi 3 e così via. Ecco un modo molto veloce per farlo.

Innanzitutto, esaminiamo questo mazzo e ne facciamo due pile. La metà di 20 è 10, quindi qualsiasi cosa più grande di 10 va in questa pila a destra, e qualsiasi cosa più piccola va in questa pila a sinistra. (Assicurati di dimostrare mentre vai.)

Ora facciamo la stessa cosa con le pile più piccole. Qual è la metà di 10? (Qualcuno dice "cinque!") Esatto! Quindi, qualsiasi cosa più grande di 5 va in questa pila a destra, e qualsiasi cosa più piccola va in questa pila a sinistra.

E qui, abbiamo il gruppo che è più grande di 10. Quindi metà di 10 è 5, e cosa è 10 più 5? (Qualcuno dice "quindici!") Esatto! Quindi, qualsiasi cosa più grande di 15 va in questa pila a destra, e qualsiasi cosa più piccola di 15 va in questa pila a sinistra.

E ora le pile stanno diventando abbastanza piccole da poterle facilmente guardare e mettere in ordine. Guarda, qui abbiamo 2, 4, 5, 3, 1. Quindi li cambiamo in questo modo, e puoi vedere 1, 2, 3, 4, 5. Quindi facciamo la stessa cosa con le altre pile, e poi mettiamo le pile in ordine e guardiamo! Sono in ordine da 1 a 20!

Congratulazioni. Hai appena insegnato a un gruppo di bambini i principi di base di un algoritmo adattivo quicksort! Puoi andare un po 'più in profondità di quello a seconda della maturità mentale, ma andare molto oltre questo punto richiede una certa comprensione della logica formale.

Per quanto riguarda la dimostrazione della sua complessità, è più complicato. È una delle cose che richiede una logica formale e in primo luogo dovranno comprendere i principi di base della notazione big-O. All'inizio potresti voler trattenere quella parte.


Non credo che il tuo esempio non sia buono perché essenzialmente si ordina in base a chiavi, non a valori, e si può solo sapere cosa si trova in posizione 15 dopo aver già ordinato.
Thorbjørn Ravn Andersen,

@ Thorbjørn: chi ha detto qualcosa sulle coppie chiave / valore? Questo è un semplice ordinamento intero per spiegare il concetto di base.
Mason Wheeler,

Pensare all'algoritmo che descrivi non è quicksort, in quanto non usi un elemento pivot.
Thorbjørn Ravn Andersen,

1
@ ThorbjørnRavnAndersen: Certo che lo fa; è solo che sa quali elementi ci sono, quindi può scegliere la mediana.
Raffaello

@Raphael e la loro distribuzione. Le carte possono essere di qualsiasi valore e colore e hanno solo un adesivo con il loro numero compreso tra 1 e 20. Da qui il mio riferimento alla chiave / indice e non al valore.
Thorbjørn Ravn Andersen,

2

Cosa ne pensi di questo?

Informatica scollegata - Algoritmi di ordinamento

Non copre abbastanza tutte le tue domande, ma è un buon inizio.

Altre risorse su questo argomento sono collegate qui .

Hanno anche reso disponibile un video che spiega gli algoritmi di ordinamento (quicksort incluso) qui . Questo video aiuta davvero a capire la differenza tra i diversi algoritmi di ordinamento per i bambini piccoli.


fantastico ! Abbastanza facile da capire
Mayur Patil,

1

Guarda la bellezza grafica di questa piccola demo .

quicksort.


1
Penso che potrebbe essere troppo astratto per i bambini.
Raffaello

3
Non per mettermi in imbarazzo, ma non ho capito quella grafica fino a quando non mi è stato spiegato quicksort in classe.
Christian Mann,

Avere un +1 perché questo è quello che mi è venuto in mente per la prima volta quando ho letto la domanda, ma poi sono uno studente visivo.
Joshua Drake,

3
Questo è davvero un modo sbagliato di spiegare come funziona quicksort . Se conosci già Quicksort, puoi confermare che questa animazione riguarda Quicksort. Se non conosci quicksort, non dice nulla tranne che quicksort è un algoritmo di ordinamento abbastanza veloce che usa un po 'di magia. A seconda di chi sia il pubblico, potresti essere in grado di motivare il pubblico a conoscere quicksort mostrando questa animazione, ma non spiega nulla di importante su come funziona.
Tsuyoshi Ito,

L'animazione è piuttosto carina ma è finora comprensibile per un principiante anche per uno studente alla prima occasione.
jonaprieto,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.