Articles of algoritmo

Por que usamos Base64?

Wikipedia diz Os esquemas de codificação Base64 são comumente usados ​​quando há a necessidade de codificar dados binários que precisam ser armazenados e transferidos em mídias projetadas para lidar com dados textuais. Isso é para garantir que os dados permaneçam intactos sem modificação durante o transporte. Mas não é que os dados são sempre armazenados […]

Como faço para escolher entre uma tabela de hash e uma tree de prefixo (trie)?

Então, se eu tiver que escolher entre uma tabela de hash ou uma tree de prefixo, quais são os fatores discriminadores que me levariam a escolher uma sobre a outra. Do meu ponto de vista ingênuo, parece que usar um trie tem alguma sobrecarga extra, pois não é armazenado como um array, mas em termos […]

Reduções paralelas em tempo logarítmico

Dado n sums parciais, é possível sumr todas as sums parciais em etapas paralelas de log2. Por exemplo, suponha que existem oito threads com oito sums parciais: s0, s1, s2, s3, s4, s5, s6, s7 . Isso poderia ser reduzido em log2(8) = 3 etapas sequenciais como essa; thread0 thread1 thread2 thread4 s0 += s1 […]

Potência de módulos de grandes números

Eu estou tentando implementar o algoritmo SAFER +. O algoritmo requer encontrar o módulo de uma function de potência da seguinte forma: pow(45, x) mod 257 A variável x é um byte e, portanto, pode variar de 0 a 255. Consequentemente, o resultado da function power pode ser MUITO grande, resultando em valores incorretos, se […]

Como encontrar todos os subconjuntos possíveis de um determinado array?

Eu quero extrair todos os possíveis sub-conjuntos de uma matriz em C # ou C ++ e, em seguida, calcular a sum de todos os elementos respectivos dos sub-conjuntos arrays para verificar quantos deles são iguais a um determinado número. O que estou procurando é o algoritmo. Eu entendo a lógica aqui, mas não consegui […]

Projeto Euler Questão 14 (Problema Collatz)

A sequência iterativa a seguir é definida para o conjunto de inteiros positivos: n -> n / 2 (n é par) n -> 3n + 1 (n é ímpar) Usando a regra acima e começando com 13, geramos a seguinte sequência: 13 40 20 10 5 16 8 4 2 1 Pode-se observar que esta […]

Calculando a rota mais curta entre dois pontos

Eu tenho trabalhado nas últimas semanas em um jogo multiplayer em HTML5, usando nodejs e websockets . Eu estive preso neste problema por um tempo. Imagine que eu tenho este mapa de tilesheet implementado com uma matriz ( como mostrado abaixo ). 1 ou telhas marrons – há um obstáculo no caminho e o jogador […]

Como adquirir um bloqueio por uma chave

Qual é a melhor maneira de impedir a atualização simultânea de um registro em um conjunto de valores-chave sem bloquear todo o conjunto? Semanticamente, estou procurando algum tipo de bloqueio por uma chave (idealmente, implementação Java, mas não necessariamente): interface LockByKey { void lock(String key); // acquire an exclusive lock for a key void unlock(String […]

Solução rápida para sum de subconjunto

Considere esta maneira de resolver o problema da sum do subconjunto: def subset_summing_to_zero (activities): subsets = {0: []} for (activity, cost) in activities.iteritems(): old_subsets = subsets subsets = {} for (prev_sum, subset) in old_subsets.iteritems(): subsets[prev_sum] = subset new_sum = prev_sum + cost new_subset = subset + [activity] if 0 == new_sum: new_subset.sort() return new_subset else: […]

Gerando inteiros em ordem crescente usando um conjunto de números primos

Eu tenho um conjunto de números primos e tenho que gerar inteiros usando apenas os fatores primos em ordem crescente. Por exemplo, se o conjunto for p = {2, 5}, então meus inteiros devem ser 1, 2, 4, 5, 8, 10, 16, 20, 25,… Existe algum algoritmo eficiente para resolver este problema?