É necessário um algoritmo genético quando o cálculo é infinitamente rápido?

8

Pelo que entendi, algoritmos genéticos experimentam múltiplas variações e avaliam a adequação de cada variação. Depois, eles selecionam as melhores variações, alteram-nas um pouco e continuam o processo com a próxima geração.

Mas e se tivermos recursos computacionais ilimitados? Podemos então experimentar todas as variações possíveis e avaliar sua adequação sem recorrer ao complexo processo de criação de novas gerações? Em outras palavras, os algoritmos genéticos são necessários apenas quando o cálculo é caro e quando um método de força bruta é impossível? Ou eles acrescentam outros benefícios também?

Eugene
fonte
1
Eu sinalizei isso como pertencente ao Stackoverflow, mas, na minha opinião, ele pertence ao site de Ciência da Computação (para o qual não há uma opção no assistente de sinalização). (Mas eu ainda votei; pergunta interessante!) #
Patrick M
5
Se você tiver memória infinita e computação infinitamente rápida, poderá gerar todos os estados possíveis do sistema, avaliar cada estado e escolher os ideais, ou concluir que nenhum dos estados possíveis é satisfatório. "Infinito" faz com que toda a pergunta seja IMO inútil. Bem, exceto se o espaço do problema também é infinito, mas estamos muito distantes de qualquer coisa que um "programador" possa fazer.
Hyde

Respostas:

14

Os algoritmos genéticos são basicamente uma metodologia guiada de tentativa e erro. A única vantagem que posso pensar para um GA em relação a uma pesquisa exaustiva é que, como o GA otimiza uma função de condicionamento físico em etapas, você pode obter uma solução ideal mais rapidamente, porque o GA favorecerá soluções que são incrementalmente melhores. Uma pesquisa exaustiva, garantida para encontrar uma solução, pode percorrer o longo caminho.

  • Se "recursos de computação" significa CPU, mas não memória, o pool genético do GA pode ter um espaço menor de memória, exigindo menos memória.

  • Por outro lado, por causa da escalada, um GA pode ficar preso no máximo local e quaisquer mutações podem não ser suficientes para soltá-lo.

  • Além disso, o tempo de pesquisa para o GA aumenta exponencialmente com o tamanho da entrada, portanto, uma pesquisa exaustiva pode acabar sendo mais rápida, dependendo do tamanho do espaço que você está pesquisando e se você pode restringir o tamanho do espaço excluindo possibilidades.

...

Ultimamente, tenho pensado nos AGs em termos de "entropia por segundo" e medindo o progresso do meu AG como uma medida de quantas possibilidades distintas ele percorre por segundo. Então eu posso comparar isso com a entropia total do espaço do problema. Se uma pesquisa de força bruta pode superar essa entropia por segundo com paralelização ou processadores rápidos, a "melhor pontuação" de um GA não é melhor do que a "melhor pontuação" descoberta.

Mas eu acabei de pensar nisso; Ainda não instrumentei um GA dessa maneira.

(Entropia é ln(N)para N estados possíveis ou ln(N) - sum(n * ln(n) for all n) / Nonde nestão as maneiras possíveis de obter um resultado dentre N possíveis resultados.)

Pergunta interessante :)

Roubar
fonte
1
Essa questão da entropia não se resume basicamente a "AGs geralmente repetem estados e a força bruta nunca"? A maneira como costumo pensar nisso é que um algoritmo de pesquisa define e é definido por uma permutação no espaço da solução. Em resumo, um algoritmo de busca nada mais é do que a ordem em que visita os pontos (módulo algumas despesas gerais devido a avaliações repetidas). Os teoremas da NFL fazem todo o sentido - posso sempre construir um problema para o qual meu algoritmo encontrará o ideal mais cedo que o seu e vice-versa.
deong 20/03/14
1
@deong Em muitos casos, estados melhores ou mesmo estados ideais podem ser rejeitados ocasionalmente (por exemplo, sistemas não determinísticos), portanto, pode ser necessário pesquisar casos repetidamente.
21814 Resguardar
1
Eu diria que há um pouco mais do que apenas isso; em primeiro lugar, enquanto a pergunta pressupõe "recursos computacionais ilimitados", os AGs são normalmente usados ​​onde a pesquisa exaustiva é completamente inviável (estamos falando de "espere o universo terminar" inviável aqui, que você aborda rapidamente com problemas interessantes). Em segundo lugar, os AGs têm um operador de cruzamento, além da mutação antiga simples; para certos tipos de problemas (exploração da NFL), essa é uma heurística muito boa e muito melhor que a pesquisa exaustiva. O resto, eu concordo amplamente.
Daniel B
4
Os GAs geralmente não são usados ​​para encontrar soluções ideais. Eles são para encontrar soluções razoáveis, com uma quantidade limitada de tempo.
Cruncher
1
O recozimento simulado é uma variação do algoritmo genético que aborda o problema máximo / mínimo local de maneira muito eficaz.
recursion.ninja
6

Sim, se a computação fosse gratuita, você não precisaria de algoritmos genéticos. Mas lembre-se de que este é um enorme "se" que nenhum de nós jamais viverá para ver!

Ainda assim, já que você está perguntando ... se a computação fosse infinitamente rápida, não haveria motivo para não aplicar a marreta mais simples de gerar e testar combinatória de força bruta a um problema. Toda pergunta que possa ser respondida com um conjunto finito de informações (isto é, um problema de satisfação de restrição no sentido mais amplo possível desse termo, que é bastante flexível) seria instantaneamente solucionável; escaladas, heurísticas e todas as simplificações inteligentes que usamos agora para construir, por exemplo, um motor de xadrez de classe mundial simplesmente não seriam necessárias.

Em outras palavras, se a computação se aproximar da velocidade infinita, a decisão de qual abordagem usar se baseia em quão difícil é escrever o programa de computador a ser executado, e não em quanto tempo leva para ser executado; e isso significa que simplesmente não vale a pena inventar um algoritmo mais complicado quando o mais simples possível também funcionar e executar ao mesmo tempo.

Indiscutivelmente, a computação tem realmente se movido nessa direção, mas lembre-se de que ainda não chegamos lá, e provavelmente nunca estaremos. (A menos que o computador quântico seja aperfeiçoado, é claro.)

Kilian Foth
fonte
3
Mesmo que os computadores quânticos sejam aperfeiçoados, suspeitamos (mas ainda não sabemos ao certo) que o NP-Complete não é um subconjunto do BQP. Se verdadeiro, isso significa que a classe de problemas solucionáveis ​​por um computador quântico com alta probabilidade em tempo polinomial não inclui os problemas de otimização NP-hard para os quais geralmente seria usado um GA.
deong
1
Há consequências muito maiores com velocidade infinita de computação ... Por exemplo, todos os problemas reconhecíveis agora se tornam decidíveis. Yay pelo problema de parada!
Cruncher
3

O problema com cálculos infinitamente rápidos é que eles cobrem infinitamente rápido um espaço de estados que é maior que o limite de informações do nosso universo conhecido. Você mencionou "força bruta", no entanto, considere que o xadrez de força bruta, por exemplo, pode produzir uma saída que excede em tamanho o número de átomos no universo.

Tomando o exemplo do xadrez ainda mais, à medida que você bruta a força bruta, você precisa diminuir o número de combinações de tabuleiro de xadrez que considera e terá que tomar uma decisão sobre quais estados manter e quais descartar - algoritmos realmente seletivos, como algoritmos genéticos, sempre será necessário.

pergunte ao coletivo
fonte
1
Bem, a menos que a física estranha, como as curvas fechadas do tempo (perto do fim), funcione e possa ser explorada para computação de uso geral.
Na verdade, o GA não é bom para o xadrez. Poda heurística, sim
Konrad Morawski
Lembra-me dessa história ... Na primeira vez que li, fiquei confuso por que escrever uma rotina de pesquisa demorou muito tempo - demorei um pouco para perceber que o aspecto "pesquisa" era diferente do aspecto "simulação" .
Pandubear
2

Se por "recursos de computação ilimitados" você quer dizer que seu algoritmo levaria 0 tempo e que a memória é ilimitada e a eletricidade não é preocupante, eu diria que o único algoritmo a ser utilizado seria um algoritmo de força bruta que tenta todas as entradas possíveis e é garantido para encontrar o melhor. Se você está se referindo à memória ilimitada, mas é possível uma diferença de tempo possível, um algoritmo genético pode ser preferível, pois pode chegar a uma solução mais rapidamente que um algoritmo de força bruta. Mas a solução do algoritmo genético pode não ser a ideal, portanto, dependendo do contexto e de seus requisitos, você ainda pode preferir o método da força bruta.

Dado que recursos ilimitados de computação não são possíveis, a questão parecia a princípio especulação inativa. Mas, à medida que obtemos cada vez mais poder computacional, a questão se torna mais relevante, pois talvez não precisemos de algoritmos genéticos em uma época de enormes supercomputadores. No entanto, notei que, à medida que os computadores se tornam mais poderosos, continuamos pedindo que façam cálculos cada vez mais difíceis com mais e mais dados. Então, no final, acho que os algoritmos genéticos estarão conosco no futuro próximo e serão usados ​​mesmo quando houver muito poder de computação disponível.

No entanto, se recursos de computação verdadeiramente ilimitados se tornassem disponíveis, muito mais mudaria do que o uso ou não de algoritmos genéticos.

Paul J Abernathy
fonte
Na linha de "não precisar de algoritmos melhores" ou o que você tem no futuro, porque nossas máquinas são muito poderosas: muitas vezes penso em pequenas otimizações que foram feitas nos primeiros CPUs, como pipelining. Parece-nos trivial ganhar alguns ciclos de relógio extras hoje em dia, mas esses ciclos se somam. Eu acho que é crucial continuar fazendo essas pequenas otimizações para nos impulsionar a computadores super-rápidos no futuro. Sem eles, teríamos apenas computadores meio velozes.
DLeh