Algoritmos gulosos

Provas por troca para atividades, mochila fracionária, ordem de serviço e códigos de Huffman.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Regra e prova

Fixa escolha sem desfazer. Prova que algum ótimo admite essa escolha e que o resto conserva a estrutura. Um exemplo correto não prova a regra; um contraexemplo refuta-a.

Atividades e serviço

  • Atividades: ordena por fim crescente; aceita se si≥fuˊltimas_i\ge f_{\text{última}}. Custo O(nlog⁡n)O(n\log n), ou O(n)O(n) se ordenado.
  • Trocar primeira de ótimo pela de fim mais cedo conserva compatibilidade.
  • Início mais cedo e duração mais curta falham. Com valores por atividade, é outro problema.
  • Servidor: todos disponíveis, tempos pi>0p_i>0; serve por duração crescente. Trocar adjacentes a,ba,b com pa>pbp_a>p_b reduz soma em pa−pbp_a-p_b. Total até terminar todos continua ∑pi\sum p_i.

Blocos contíguos

Caixas 0<pi≤W0<p_i\le W, sem reordenar nem dividir. Leva maior prefixo que cabe; abre outro quando próxima não cabe. Custo Θ(n)\Theta(n).

Fronteira gulosa gj≥ojg_j\ge o_j após jj camiões, por indução com sufixo de peso positivo. Sem ordem fixa, a prova cai.

Mochila e trocos

  • Fracionária: wi>0w_i>0, xi∈[0,1]x_i\in[0,1]; ordena por vi/wiv_i/w_i e enche, com fração do último. Troca de peso para maior densidade nunca reduz valor. O(nlog⁡n)O(n\log n).
  • 0-1: troca proibida. Com (6,12),(5,9),(5,9)(6,12),(5,9),(5,9) e W=10W=10, densidade dá 12 e B+CB+C dá 18.
  • kk exceções: enumera 2k2^k subconjuntos excecionais; completa regulares por valor (peso igual) ou por peso (valor igual). Para kk fixo, polinomial sem tabela em WW.
  • Trocos: maior que cabe só é ótimo em sistema canónico ilimitado. Com 1,3,4 e alvo 6, dá 4+1+14+1+1 em vez de 3+33+3. Stock finito pode invalidar regra mesmo em canónico.

Huffman

Símbolos nas folhas; custo ∑fiℓi\sum f_i\ell_i.

  1. Heap com frequências.
  2. Retira dois mínimos, cria pai com soma, reinsere.
  3. Repete até uma raiz.

Fusões 5+7=125+7=12, 10+12=2210+12=22, 15+22=3715+22=37; custo 12+22+37=7112+22+37=71. Existe ótimo com dois mínimos como irmãos mais profundos; contrair reduz sem perder otimalidade. Heap dá O(nlog⁡n)O(n\log n). Empates mudam códigos sem mudar custo. Um símbolo exige convenção explícita no formato.

Provas e variantes.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.