A Análise Suavizada é usada fora da academia?

24

A análise suavizada encontrou seu caminho na análise do fluxo principal de algoritmos? É comum que os designers de algoritmos apliquem análises suavizadas a seus algoritmos?

Gilles 'SO- parar de ser mau'
fonte
11
As pessoas aplicam algum tipo de análise de complexidade a seus algoritmos fora da academia?
Dave Clarke
2
O que @DaveClarke diz; talvez ele deva pedir análises rigorosas (ou não triviais). Espero que muitos profissionais analisem seus algoritmos, contem a profundidade do aninhamento de loop e digam: "Isso é !". O(n3)
Raphael
3
Enquanto procurava por qualquer uso de análise suavizada que não fosse o Simplex, encontrei uma lista com curadoria de um dos caras que descobriu a técnica.
Raphael
1
@DaveClarke, e as pessoas que trabalham na IBM, HP ou NTT? Eles não deveriam estar usando esse tipo de análise?
Marcos Villagra
1
@DaveClarke I do.
21712 Kevin

Respostas:

12

Eu posso estar errado, mas vejo a análise suavizada como uma maneira de explicar o comportamento prático de algoritmos que têm más garantias teóricas (simplex, k-means e assim por diante). Não tenho certeza do que significaria usar a análise suavizada na prática, exceto para justificar o uso de uma heurística específica com pior desempenho do pior caso ("Minha heurística tem um comportamento do pior caso do tipo blá-blá, mas uma análise suave indica que fazer bem na prática etc etc ")

Suresh
fonte
2
O problema é que, até agora, os grandes sucessos da análise suavizada foram explicar a prática atual, de modo que os praticantes pudessem reagir apenas dizendo "bem, é bom que tudo o que eu esteja fazendo possa ser mostrado para fazer sentido" :). Não sei se alguém decidiu usar uma heurística até agora menos conhecida por causa da análise suavizada.
Suresh
A análise formal suavizada é muito difícil, não há razão para que alguém que não seja em teoria deva praticá-la. Por outro lado, se você o considerar como uma heurística usada para analisar um algoritmo (ou seja, a entrada é semi-aleatória), provavelmente será usada o tempo todo.
Yuval Filmus
3

A maneira como as pessoas analisam algoritmos no mundo real é muito diferente da academia. Enquanto na academia o objetivo é encontrar um limite superior comprovadamente correto no tempo de execução, na vida real o objetivo é entender como o algoritmo funciona e quais ajustes podem melhorar o tempo de execução. Existem dois métodos principais que são banidos na academia, mas usados ​​na prática:

  • O método de aproximação. Aqui você usa muitas suposições simplificadoras para tentar prever o tempo de execução de um algoritmo. Semelhante ao que os físicos teóricos costumavam fazer.
  • Experimentação. Você executa seu algoritmo e mede várias estatísticas - quanto tempo foi gasto em cada parte, quantas vezes cada função foi chamada, com que frequência cada ramificação foi executada e assim por diante. Esta informação pode ser usada para otimizar o algoritmo. A experimentação também é usada para descobrir se algumas aproximações feitas durante a análise do algoritmo funcionam na prática ou não.

Dito isto, não acho que seja muito comum analisar um algoritmo na prática, além de adicionar algum texto de preenchimento em uma publicação acadêmica relacionada. O foco está na engenharia de software ou na otimização de baixo nível, dependendo do assunto.

Por fim, a análise suavizada é uma heurística que pode ser usada para explicar por que os algoritmos funcionam melhor na prática do que o pior caso sugere - ou seja, já que algumas das entradas são "aleatórias" em algum sentido. Essa heurística pode ser usada para aproximar o comportamento do algoritmo, se alguém estiver usando o método de aproximação.

Yuval Filmus
fonte
"Enquanto na academia, o objetivo é encontrar um limite superior comprovadamente correto no tempo de execução" - esse é um objetivo, não o objetivo. Também há muito trabalho na análise de caso médio, mesmo que o estudante médio de CS possa não ver muito disso (porque é relativamente difícil). "Entender como o algoritmo funciona" é, sem dúvida, a base de todos os algoritmos da academia.
Raphael