Articles of algoritmo

Gerando permutações preguiçosamente

Eu estou procurando um algoritmo para gerar permutações de um conjunto de tal forma que eu poderia fazer uma lista preguiçosa deles no Clojure. Por exemplo, eu gostaria de fazer uma iteração de uma lista de permutações em que cada permutação não é calculada até que eu a solicite, e todas as permutações não precisam […]

Quais algoritmos calculam as direções do ponto A ao ponto B em um mapa?

Como os provedores de mapas (como o Google ou o Yahoo! Maps) sugerem rotas? Quer dizer, eles provavelmente têm dados do mundo real de alguma forma, certamente incluindo distâncias, mas também coisas como velocidade de condução, presença de calçadas, horários de trens etc. Mas suponha que os dados estivessem em um formato mais simples, digamos […]

Java – Removendo duplicatas em uma ArrayList

Eu estou trabalhando em um programa que usa um ArrayList para armazenar Strings . O programa solicita ao usuário um menu e permite que o usuário escolha uma operação a ser executada. Tais operações estão adicionando Strings à List, imprimindo as inputs, etc. O que eu quero ser capaz de fazer é criar um método […]

Factorial exato rápido rápido

Eu tenho uma biblioteca bignumber de ponto fixo e quero implementar o fatorial rápido sem perda de precisão. Depois de alguns truques de matemática no papel eu tenho essa fórmula: (4N)!=((2N)!).((2N)!).{ (2N+1).(2N+3).(2N+5)…(4N-1) }.(2^N)/(N!) Isso já é bem rápido, e com alguns truques de programação a complexidade se aproxima de ~ O(log(n)) . Para ser claro, […]

Existe um algoritmo de ordenação inteira O (n)?

Na semana passada eu tropecei neste artigo onde os autores mencionam na segunda página: Observe que isso gera um tempo de execução linear para pesos de borda inteira. O mesmo na terceira página: Isso produz um tempo de execução linear para ponderações de arestas inteiras e O (m log n) para sorting baseada em comparação. […]

Por que a constante sempre é descartada da grande análise O?

Estou tentando entender um aspecto particular da análise Big O no contexto de execução de programas em um PC. Suponha que eu tenha um algoritmo que tenha um desempenho de O (n + 2). Aqui, se n ficar muito grande, o 2 se torna insignificante. Neste caso, é perfeitamente claro que o desempenho real é […]

Subconjunto de sum com um tamanho de subconjunto fixo

O problema do subconjunto da sum afirma: Dado um conjunto de inteiros, existe um subconjunto não vazio cuja sum é zero? Este problema é NP-completo em geral. Estou curioso para saber se a complexidade desta ligeira variante é conhecida: Dado um conjunto de inteiros, existe um subconjunto de tamanho k cuja sum é zero? Por […]

Contando os swaps adjacentes necessários para converter uma permutação em outra

Recebemos duas sequências de letras do alfabeto latino em letras minúsculas. Eles são do mesmo tamanho e têm a mesma quantidade de tipos de letras (o primeiro tem um número igual de t’s como o segundo e assim por diante). Somos obrigados a encontrar o número mínimo de swaps ( por “swap” queremos mudar a […]

encontrar todos os subconjuntos que summ um determinado valor

Dado um conjunto de números: {1, 3, 2, 5, 4, 9}, encontre o número de subconjuntos que summ um valor específico (digamos, 9 para este exemplo). Isso é semelhante ao problema da sum do subconjunto com a pequena diferença de que, em vez de verificar se o conjunto tem um subconjunto que sum 9, precisamos […]

recursion versus iteração

É correto dizer que em toda parte a recursion é usada um loop for poderia ser usado? E se a recursion é geralmente mais lenta, qual é a razão técnica para usá-la na iteração de loop? E se é sempre possível converter uma recursion em um loop for, existe uma maneira prática de fazer isso?