Eu nunca vi um algoritmo com um log no denominador antes e gostaria de saber se existem algoritmos realmente úteis com este formulário.
Entendo muitas coisas que podem fazer com que um fator de log seja multiplicado no tempo de execução, por exemplo, algoritmos de classificação ou de árvore, mas o que poderia fazer com que você se dividisse por um fator de log?
ds.algorithms
big-list
time-complexity
Mike Izbicki
fonte
fonte
Respostas:
A resposta usual para "o que poderia fazer você se dividir por um log?" é uma combinação de duas coisas:
Eu acho que existem muitos exemplos, mas o exemplo clássico é o algoritmo dos quatro russos para as subsequências comuns mais longas, etc. Ele acaba sendo , porque usa a idéia de empacotar bits, mas economiza um segundo fator de log usando outra idéia: substituindo blocos de operações de O ( log 2 n ) bits por uma única consulta de tabela.O(n2/log2n) O(log2n)
fonte
O Cubo de Rubik é um exemplo muito natural (e para mim inesperado). Um cubon × n × n requer Θ ( n2/ logn ) etapas para resolver. (Observe que essa é uma notação theta, portanto, esse é um limite superior e inferior apertado).
Isso é mostrado neste artigo [1].
Vale ressaltar que a complexidade de resolver instâncias específicas do cubo de Rubik éΘ ( n2/ logn ) garante uma solução e garante que todas as soluções sejam assintoticamente ótimas, mas pode não resolver instâncias específicas de maneira ideal. Sua definição de útil pode ou não se aplicar aqui, pois os cubos de Rubik geralmente não são resolvidos com esse algoritmo ( o algoritmo de Kociemba é geralmente usado para cubos pequenos, pois fornece soluções rápidas e ideais na prática).
aberta, mas conjecturada como sendo NP-hard (discutida aqui por exemplo)NP-hard [2]. O algoritmo[1] Erik D. Demaine, Martin L. Demaine, Sarah Eisenstat, Anna Lubiw e Andrew Winslow. Algoritmos para resolver cubos de Rubik. Anais do 19º Simpósio Anual Europeu de Algoritmos (SEC 2011), 5–9 de setembro de 2011, páginas 689–700
[2] Erik D. Demaine, Sarah Eisenstat e Mikhail Rudoy. A solução ideal para o cubo de Rubik é NP-complete. Anais do 35º Simpósio Internacional sobre Aspectos Teóricos da Ciência da Computação (STACS 2018), 28 de fevereiro a 3 de março de 2018, páginas 24: 1-24: 13.
fonte
Um exemplo de aparecendo no denominador sem truques de empacotamento de bits é um artigo recente de Agarwal, Ben Avraham, Kaplan e Sharir sobre o cálculo da distância discreta de Fréchet entre duas cadeias poligonais no tempo O ( n 2 log log n / log n ) . Embora eu não esteja familiarizado com os detalhes do algoritmo, um truque geral é particionar a entrada em partes relativamente pequenas e depois combinar as respostas de maneira inteligente (é claro que isso soa como dividir e conquistar, mas você não obtém o log n no denominador com alguns truques inteligentes)registron O ( n2registroregistron / logn )
fonte
Não é exatamente o que você pediu, mas uma situação "em estado selvagem" na qual um fator de log aparece no denominador é o artigo " Seixos e programas de ramificação para avaliação de árvores ", de Stephen Cook, Pierre McKenzie, Dustin Wehr, Mark Braverman e Stephen Cook. Rahul Santhanam.
O problema de avaliação de árvore (TEP) é: dado uma árvore -ary anotada com valores em { 1 , … , k } nas folhas e funções { 1 , … , k } d → { 1 , … , k } nos nós internos , avalie a árvore. Aqui cada nó interno obtém o valor de sua função anotada nos valores de seus filhos. Esse é um problema fácil, e o objetivo é mostrar que ele não pode ser resolvido no espaço logarítmico (quando a altura da árvore faz parte da entrada). Para esse efeito, estamos interessados no tamanho dos programas de ramificação que resolvem o TEP.d { 1 , … , k } { 1 , … , k }d→ { 1 , … , k }
fonte
Isso fornece muitos exemplos de problemas cujo limite superior mais conhecido da complexidade do espaço possui um log no denominador. (Dependendo do seu ponto de vista, acho que isso torna este exemplo muito interessante - que teorema incrível! - ou muito desinteressante - provavelmente não é "realmente útil".)
[1] Hopcroft, Paul e Valiant. No tempo versus espaço . J. ACM 24 (2): 332-337, 1977.
fonte
fonte
William J. Masek, Mike Paterson: Uma seqüência de computação mais rápida de algoritmos de edição de distâncias. J. Comput. Syst. Sci. 20 (1): 18-31 (1980).
fonte
Gregory Valiant e Paul Valiant, O poder dos estimadores lineares, 2011. No 52º Simpósio Anual do IEEE sobre os Fundamentos da Ciência da Computação, FOCS 2011.
fonte
Aqui está outro exemplo de um limite restrito com um fator de log. (Este é o Teorema 6.17 da Complexidade da Função Booleana: Avanços e Fronteiras por Stasys Jukna.)
fonte
fonte
fonte