Return to Video

Qual a maneira mais rápida de ordenar alfabeticamente a biblioteca? — Chand John

  • 0:07 - 0:09
    Trabalhas na biblioteca da faculdade.
  • 0:09 - 0:12
    Estás no meio de uma tarde tranquila
  • 0:12 - 0:17
    quando, subitamente, chega um carregamento
    de 1280 livros diferentes.
  • 0:19 - 0:21
    Os livros foram descarregados
    numa longa linha reta
  • 0:22 - 0:23
    mas estão todos fora de ordem,
  • 0:23 - 0:26
    e o sistema de classificação
    está avariado.
  • 0:27 - 0:30
    Para piorar as coisas,
    as aulas começam amanhã
  • 0:30 - 0:32
    o que significa que,
    logo de manhã cedo,
  • 0:32 - 0:36
    todos os estudantes vão aparecer
    à procura desses livros.
  • 0:37 - 0:39
    Como é que podes ordenar
    todos os livros a tempo?
  • 0:39 - 0:43
    Uma forma seria começar
    pelos dois primeiros livros,
  • 0:43 - 0:45
    num dos extremos da fila.
  • 0:45 - 0:49
    Se os dois primeiros livros estiverem
    por ordem, deixa-os ficar onde eles estão.
  • 0:49 - 0:51
    Caso contrário, troca-os de lugar.
  • 0:51 - 0:53
    Depois, observa o segundo
    e o terceiro livros.
  • 0:53 - 0:55
    e repete o procedimento.
  • 0:56 - 0:58
    Continua até chegares ao fim da fila.
  • 0:58 - 1:01
    A certa altura, encontras o livro
    que devia ser o último.
  • 1:01 - 1:05
    Vai-o trocando sempre de lugar
    com os livros posteriores,
  • 1:05 - 1:09
    até ele chegar ao fim da fila,
    ao lugar que lhe pertence.
  • 1:09 - 1:12
    Volta a começar do princípio
    e repete o procedimento.
  • 1:12 - 1:15
    até colocar o penúltimo livro
    no seu devido lugar.
  • 1:16 - 1:19
    Volta a repetir tudo até todos os livros
    estarem nos seus lugares.
  • 1:19 - 1:22
    Este método chama-se
    "Ordenação por Flutuação".
  • 1:22 - 1:24
    É simples, mas lento.
  • 1:24 - 1:29
    Tens que fazer 1279 comparações
    na primeira ronda,
  • 1:29 - 1:33
    depois, 1278, e assim sucessivamente,
  • 1:34 - 1:39
    num total de 818 560 comparações.
  • 1:39 - 1:44
    Se cada uma delas demorar só um segundo,
    o processo demorará nove dias.
  • 1:44 - 1:49
    Uma segunda estratégia seria começar
    por ordenar os dois primeiros livros.
  • 1:49 - 1:54
    Depois, comparar o terceiro livro
    com o livro no segundo lugar.
  • 1:54 - 1:57
    Se ele deve ficar antes do segundo livro,
    troca-os de lugar.
  • 1:57 - 2:00
    Depois compara-o com o livro
    no primeiro lugar
  • 2:00 - 2:02
    e troca-os, se necessário.
  • 2:02 - 2:04
    Tens os três primeiros livros
    ordenados.
  • 2:04 - 2:08
    Continua com um livro de cada vez
  • 2:08 - 2:12
    comparando e trocando o novo livro
    com os que estão antes dele
  • 2:12 - 2:16
    até ele ficar corretamente colocado
    entre os livros ordenados até aí.
  • 2:16 - 2:18
    Este método chama-se
    "Ordenação por Inserção".
  • 2:18 - 2:20
    Ao contrário da "Ordenação por Flutuação"
  • 2:20 - 2:24
    não exige que se comparem
    todos os pares de livros.
  • 2:24 - 2:27
    Em média, só precisamos
    de comparar cada livro
  • 2:27 - 2:30
    com metade dos livros
    que estão antes dele.
  • 2:30 - 2:32
    Neste caso, o número total de comparações
  • 2:32 - 2:36
    seria de 409 280,
  • 2:36 - 2:38
    o que levaria quase cinco dias.
  • 2:38 - 2:41
    Continuas a ter que fazer
    demasiadas comparações.
  • 2:41 - 2:43
    Esta é uma ideia melhor.
  • 2:43 - 2:45
    Primeiro, agarra num livro ao acaso.
  • 2:45 - 2:49
    Chama-lhe "partição" e compara-o
    com o outros livros todos.
  • 2:50 - 2:52
    Depois divide a fila
  • 2:52 - 2:56
    colocando à esquerda todos os livros
    que devem ficar antes da partição
  • 2:56 - 2:59
    e à direita, os que devem ficar
    depois da partição.
  • 2:59 - 3:01
    Poupaste imenso tempo
  • 3:01 - 3:04
    porque não precisas de comparar
    nenhum dos livros da esquerda
  • 3:04 - 3:06
    com os da direita.
  • 3:07 - 3:10
    Depois, olha só
    para os livros da esquerda.
  • 3:10 - 3:13
    Podes voltar a agarrar num livro
    ao acaso, outra "partição"
  • 3:13 - 3:17
    e separar os livros antes dela
    dos livros depois dela.
  • 3:17 - 3:20
    Podes continuar a criar subpartições
    como estas
  • 3:20 - 3:22
    até teres um grupo de pequenas sublinhas,
  • 3:22 - 3:25
    cada uma das quais
    podes ordenar rapidamente,
  • 3:25 - 3:28
    usando outra estratégia
    como a "Ordenação por Inserção".
  • 3:28 - 3:33
    Cada ronda de partição exige
    cerca de 1280 comparações.
  • 3:33 - 3:36
    Se as partições estiverem equilibradas,
  • 3:36 - 3:41
    dividir os livros em 128 sublinhas de 10,
    deve precisar de sete rondas,
  • 3:41 - 3:44
    ou seja 8960 segundos.
  • 3:44 - 3:48
    Ordenar as sublinhas,
    demorará mais 22 segundos cada.
  • 3:49 - 3:52
    Ao todo, este método,
    conhecido por "Ordenação Rápida"
  • 3:52 - 3:55
    pode ordenar os livros
    em menos de três horas e meia.
  • 3:55 - 3:56
    Mas há um inconveniente.
  • 3:56 - 3:59
    As partições podem ficar desequilibradas,
    e não poupar tempo nenhum
  • 4:00 - 4:02
    Felizmente, isso acontece raramente.
  • 4:02 - 4:05
    É por isso que a Ordenação Rápida
    é uma das estratégias mais eficazes
  • 4:05 - 4:08
    usadas hoje pelos programadores.
  • 4:08 - 4:11
    Usam-na para ordenar, por preço,
    os artigos numa loja online
  • 4:11 - 4:14
    ou para criar uma lista de todas
    as estações de gasolina
  • 4:14 - 4:15
    perto de uma dada localidade
  • 4:15 - 4:17
    ordenadas pela distância.
  • 4:17 - 4:21
    No teu caso, fizeste uma ordenação rápida,
    com tempo de sobra.
  • 4:21 - 4:23
    Mais um dia de sobressalto na biblioteca
Title:
Qual a maneira mais rápida de ordenar alfabeticamente a biblioteca? — Chand John
Speaker:
Chand John
Description:

Vejam a lição completa: http://ed.ted.com/lessons/what-s-the-fastest-way-to-alphabetize-your-bookshelf-chand-john

Trabalhas na biblioteca da faculdade. Estás no meio de uma tarde tranquila quando, subitamente, chega um carregamento de 1280 de livros diferentes. Os livros foram descarregados numa longa linha reta mas estão todos fora de ordem, e o sistema de classificação está avariado. Como podes ordenar os livros rapidamente? Chand John mostra como é possível, lançando luz em como os algoritmos ajudam bibliotecários e motores de busca a ordenar rapidamente informações.

more » « less
Video Language:
English
Team:
closed TED
Project:
TED-Ed
Duration:
04:39

Portuguese subtitles

Revisions