b"\n_START_ARTICLE_\nAlgoritmo determin\xc3\xadstico\n_START_PARAGRAPH_\nEm Ci\xc3\xaancia da Computa\xc3\xa7\xc3\xa3o, um algoritmo determin\xc3\xadstico \xc3\xa9 um algoritmo em que, dada uma certa entrada, ela produzir\xc3\xa1 sempre a mesma sa\xc3\xadda, com a m\xc3\xa1quina respons\xc3\xa1vel sempre passando pela mesma seq\xc3\xbc\xc3\xaancia de estados. Algoritmos determin\xc3\xadsticos s\xc3\xa3o, de longe, o tipo mais estudado e conhecido de algoritmo, assim como um dos mais pr\xc3\xa1ticos, uma vez que podem ser executados em m\xc3\xa1quinas reais de forma eficiente._NEWLINE_Formalmente, um algoritmo determin\xc3\xadstico computa uma fun\xc3\xa7\xc3\xa3o matem\xc3\xa1tica; uma fun\xc3\xa7\xc3\xa3o tem um valor \xc3\xbanico para cada entrada dada, e o algoritmo \xc3\xa9 um processo que produz este valor em particular como sa\xc3\xadda.\n_START_SECTION_\nDefini\xc3\xa7\xc3\xa3o Formal\n_START_PARAGRAPH_\nAlgoritmos determin\xc3\xadsticos podem ser definidos em termos de uma m\xc3\xa1quina de estados: um estado descreve o que uma m\xc3\xa1quina est\xc3\xa1 fazendo em um instante espec\xc3\xadfico no tempo. M\xc3\xa1quinas de estado passam de maneira discreta de um estado para outro. Imediatamente depois de colocarmos a entrada, a m\xc3\xa1quina est\xc3\xa1 no que chamamos estado inicial. Se a m\xc3\xa1quina \xc3\xa9 determin\xc3\xadstica, isto significa que deste ponto em diante, seu estado atual determinar\xc3\xa1 qual ser\xc3\xa1 o seu pr\xc3\xb3ximo estado; seu caminho atrav\xc3\xa9s do conjunto de estados \xc3\xa9 predeterminado. Note que uma m\xc3\xa1quina pode ser determin\xc3\xadstica e ainda assim nunca parar ou terminar, e portanto, deixar de retornar um resultado._NEWLINE_Exemplos de m\xc3\xa1quinas abstratas em particular que s\xc3\xa3o determin\xc3\xadsticas incluem a m\xc3\xa1quina de Turing determin\xc3\xadstica e o aut\xc3\xb4mato finito determin\xc3\xadstico.\n_START_SECTION_\nProblemas com algoritmos determin\xc3\xadsticos\n_START_PARAGRAPH_\nInfelizmente, encontrar algoritmos determin\xc3\xadsticos para alguns problemas \xc3\xa9 dif\xc3\xadcil. Por exemplo, existem algoritmos probabil\xc3\xadsticos simples e eficientes que determinam se um dado n\xc3\xbamero \xc3\xa9 primo e apresentam uma pequena margem de erro (por exemplo, o teste de primalidade de Fermat). Os algoritmos determin\xc3\xadsticos conhecidos para resolver o mesmo problema ainda s\xc3\xa3o consideravelmente mais lentos na pr\xc3\xa1tica._NEWLINE_Outro exemplo: os problemas NP-completos, que incluem muitos dos problemas pr\xc3\xa1ticos mais importantes, podem ser resolvidos rapidamente por m\xc3\xa1quinas de Turing n\xc3\xa3o-deterministicas; por\xc3\xa9m, nunca foram encontrados algoritmos pr\xc3\xa1ticos e eficientes para qualquer um deles. No m\xc3\xa1ximo, consegue-se apenas encontrar solu\xc3\xa7\xc3\xb5es aproximadas ou solu\xc3\xa7\xc3\xb5es para casos especiais._NEWLINE_Outro grande problema com algoritmos determin\xc3\xadsticos \xc3\xa9 que, \xc3\xa0s vezes, n\xc3\xa3o queremos que os resultados sejam previs\xc3\xadveis. Por exemplo, se algu\xc3\xa9m est\xc3\xa1 jogando uma rodada de blackjack online que embaralha as cartas usando um gerador de n\xc3\xbameros pseudoaleat\xc3\xb3rios, \xc3\xa9 poss\xc3\xadvel para um jogador inteligente descobrir com precis\xc3\xa3o os n\xc3\xbameros que o gerador ir\xc3\xa1 escolher, determinando assim todo o conte\xc3\xbado do baralho previamente e permitindo-lhe trapacear; por exemplo, o grupo de seguran\xc3\xa7a de software (SSG) da Reliable Software Technologies foi capaz de fazer isso em uma implementa\xc3\xa7\xc3\xa3o da variante de poquer Texas Hold 'em que \xc3\xa9 distribu\xc3\xadda pela ASF Software, Inc, permitindo-lhes prever de maneira consistente o resultado das m\xc3\xa3os de maneira pr\xc3\xa9via. Problemas similares s\xc3\xa3o encontrados em criptografia, onde as chaves privadas s\xc3\xa3o muitas vezes criadas usando esse tipo de gerador. Isso geralmente pode ser evitado atrav\xc3\xa9s do uso de um gerador de n\xc3\xbameros pseudo-aleat\xc3\xb3rios criptograficamente seguro.\n_START_SECTION_\nMercury\n_START_PARAGRAPH_\nEsta linguagem de programa\xc3\xa7\xc3\xa3o l\xc3\xb3gica-funcional permite estabelecer diferentes categorias de determinismo para modos de predicados."