Os algoritmos randomizados (tempo polinomial, resultado booleano) estão na classe de complexidade computacional RP, que é um subconjunto de NP onde residem algoritmos não determinísticos (tempo polinomial, resultado booleano) e um superconjunto de P onde determinístico (tempo polinomial, resultado booleano) residem algoritmos.
A complexidade do subconjunto é sobre a redução de problemas em um conjunto para outro. Assim, RP ⊆ NP exclui a possibilidade de algoritmos aleatórios que também não são determinísticos, porque, definitivamente, um superconjunto contém o subconjunto. Subconjunto significa que todo algoritmo RP (ou qualquer algoritmo RP-completo) pode ser reduzido a algum algoritmo NP (ou qualquer algoritmo NP-completo). P é um subconjunto de RP porque todos os problemas em P podem ser reduzidos a um problema em RP, em que a quantidade de entropia não controlada é 0.
Tangencialmente, isso é análogo ao modo como todo problema em NC (computação paralela) pode ser reduzido a um problema em P , simulando a computação paralela em uma redução a um problema serial em P, mas ainda não está provado que o inverso é verdadeiro, ou seja, que todo problema em P é redutível a um problema na NC, nem provado que não é verdade, ou seja, a prova implausível de que um problema com P completo não é redutível a um problema na NC. Pode ser possível que haja problemas inerentemente seriais e que não possam ser computados em paralelo, mas provar que provar P ≠ NC parece ser implausível (por razões tangenciais demais para discutir nesta resposta).
De maneira mais geral (ou seja, não limitado a tipos de resultados booleanos), os algoritmos aleatórios são diferenciados dos algoritmos determinísticos, em que parte da entropia é de origem externa . Os algoritmos randomizados são diferenciados dos algoritmos não determinísticos porque a entropia é limitada e, portanto, pode-se provar que os algoritmos aleatórios (e não não determinísticos) sempre terminam.
A imprevisibilidade de algoritmos não determinísticos se deve à incapacidade de enumerar todas as permutações possíveis da entropia de entrada (o que resulta em imprevisibilidade de terminação). A imprevisibilidade de um algoritmo aleatório se deve à incapacidade de controlartoda a entropia de entrada (o que resulta em uma imprevisibilidade de um resultado indeterminado, embora a taxa de imprevisibilidade possa ser prevista). Nenhuma dessas são declarações sobre imprevisibilidade da resposta correta para o problema, mas a imprevisibilidade se manifesta no canal lateral da terminação e resultado indeterminado, respectivamente. Parece que muitos leitores conflitam imprevisibilidade em uma área com imprevisibilidade do resultado correto, que é uma combinação que nunca escrevi (revise o histórico de edições).
É fundamental entender que o não determinismo é sempre (em qualquer ciência ou uso do termo) a incapacidade de enumerar entropia universal (isto é, sem limites). Enquanto a randomização se refere ao acesso a outra fonte de entropia (em programas que não sejam e, portanto, não estejam sob o controle das variáveis de entrada), que podem ou não ser ilimitadas;
Adicionei o seguinte comentário abaixo da resposta atualmente mais popular ao outro tópico que faz uma pergunta semelhante.
Todas as ciências usam a mesma definição de não determinismo unificada no conceito de entropia ilimitada. Resultados imprevisíveis em todas as ciências devem-se à incapacidade de enumerar a priori todas as saídas possíveis de um algoritmo (ou sistema) porque ele aceita estados ilimitados, ou seja, classe de complexidade NP. Especificar uma entrada específica para observar se ela para e notar que o resultado é idempotente é equivalente em outras ciências a manter o resto da entropia do universo constante enquanto repete a mesma mudança de estado. A computação permite esse isolamento de entropia, enquanto as ciências naturais não.
Acrescentando alguns dos melhores comentários para esclarecer meu argumento sobre a única distinção saliente entre randomizado e não determinístico.
É realmente muito elegante e fácil ver a distinção, uma vez que todos vocês param de confundi-la tentando descrevê-la de um ponto de vista operacional, em vez do ponto de vista de entropia saliente.
@reinierpost todo mundo está confundindo a diferença entre aleatório e não determinístico. Isso faz com que seu comentário fique confuso. O algoritmo responde à interação da entropia de entrada (variável) e sua entropia interna do código fonte (invariável). O não determinismo é entropia ilimitada. A entropia invariável pode até ser internamente ilimitada, como expandir os dígitos de π . Randomizado é que parte da entropia não é acoplada à entrada conforme definido (isto é, pode ser proveniente de uma chamada do sistema /dev/random
ou aleatoriedade simulada, por exemplo, NFA ou PRNG).
.
A definição formal de @Raphael de automatismo finito não determinístico (NFA) é entropia de entrada finita (dados: a 5-tupla). Assim, todo NFA pode funcionar em uma máquina de Turing determinística, ou seja, não requer uma máquina completa de Turing não determinística. Assim, os AFN não fazem parte da classe de problemas não determinísticos. A noção de "não-determinismo" na AFN é que seu determinismo (embora claramente presente, pois toda AFN pode ser convertida em uma AFD) não é explicitamente expandido - não é o mesmo que não-determinismo da computação
.
@ Rafael, o alegado "não determinismo" nos NFAs é realmente aleatoriedade, é o sentido da minha definição da distinção entre aleatoriedade e não determinismo. Minha definição é que aleatoriedade é onde parte da entropia que não está sob controle, conhecimento (ou expansão não explícita desejada no caso de uma NFA) da entrada para o programa ou função. Enquanto o verdadeiro não determinismo é a incapacidade de conhecer a entropia em qualquer caso, porque é ilimitada. É exatamente isso que distingue o randomizado do não determinismo. Portanto, a NFA deve ser um exemplo do primeiro, não do último, como você reivindicou.
.
@ Rafael, como já expliquei, a noção de não-determinismo nas AFNs combina o não-determinístico com a entropia finita. Assim, o não-determinismo é um conceito local de não expandir o determinismo como uma forma de compressão ou conveniência; portanto, não dizemos que os AFNs são não-determinísticos, ao contrário, eles possuem aparência aleatória para um oráculo que não deseja calcular a expansão determinística. Mas tudo isso é uma miragem, porque ela pode ser expandida deterministicamente porque a entropia não é ilimitada, ou seja, finita.
Dicionários são ferramentas. Aprenda a usá-los.
adjetivo aleatório
Estatisticas. ou caracterizar um processo de seleção no qual cada item de um conjunto tem uma probabilidade igual de ser escolhido.
sendo ou relacionado a um conjunto ou a um elemento de um conjunto, cujos elementos tenham igual probabilidade de ocorrência
Assim, a randomização requer apenas que parte da entropia de entrada seja equiprobável, o que é congruente com minha definição de que parte da entropia de entrada não seja controlada pelo responsável pela chamada da função. Observe que a randomização não exige que a entropia de entrada seja indecidível até a finalização.
Na ciência da computação, um algoritmo determinístico é um algoritmo que, dada uma entrada específica, sempre produzirá a mesma saída, com a máquina subjacente sempre passando pela mesma sequência de estados.
Formalmente, um algoritmo determinístico calcula uma função matemática; uma função possui um valor exclusivo para qualquer entrada em seu domínio e o algoritmo é um processo que produz esse valor específico como saída.
Os algoritmos determinísticos podem ser definidos em termos de uma máquina de estados: um estado descreve o que uma máquina está fazendo em um determinado instante no tempo. Máquinas de estado passam de maneira discreta de um estado para outro. Logo após inserirmos a entrada, a máquina está em seu estado inicial ou inicial. Se a máquina é determinística, isso significa que, a partir deste momento, seu estado atual determina qual será seu próximo estado; seu curso através do conjunto de estados é predeterminado. Observe que uma máquina pode ser determinística e, mesmo assim, nunca para ou termina e, portanto, falha em fornecer um resultado.
Portanto, isso está nos dizendo que algoritmos determinísticos devem ser completamente determinados pelo estado de entrada da função, ou seja, devemos ser capazes de provar que a função terminará (ou não terminará) e que não pode ser indecidível. Apesar da tentativa confusa da Wikipedia de descrever não determinística, a única antítese à determinística, conforme definida acima pela Wikipedia, são algoritmos cujo estado de entrada (entropia) está mal definido. E a única maneira de o estado de entrada poder ser mal definido é quando é ilimitado (portanto, não pode ser deterministicamente pré-analisado). É exatamente isso que distingue uma máquina de Turing não determinística (e muitos programas do mundo real, escritos em linguagens completas comuns de Turing, como C, Java, Javascript, ML, etc.) de TMs determinísticas e linguagens de programação como HTML, fórmulas de planilhas, Coq, Epigram,
Na teoria da complexidade computacional, algoritmos não determinísticos são aqueles que, em todas as etapas possíveis, podem permitir múltiplas continuações (imagine um homem andando por um caminho em uma floresta e, toda vez que avança, ele deve escolher qual bifurcação na estrada que deseja) pegar). Esses algoritmos não chegam a uma solução para todos os caminhos computacionais possíveis; no entanto, é garantido que eles chegarão a uma solução correta para algum caminho (ou seja, o homem que anda pela floresta só pode encontrar sua cabana se escolher alguma combinação de caminhos "corretos"). As opções podem ser interpretadas como suposições em um processo de pesquisa.
Wikipedia e outros tentam confundir randomização com não-determinismo, mas qual é o sentido de ter os dois conceitos se você não os distingue eloquentemente?
Claramente, o determinismo é sobre a capacidade de determinar. Claramente, a randomização é sobre como tornar equitativa parte da entropia.
Incluir entropia aleatória no estado de um algoritmo não é necessário torná-lo indeterminável. Por exemplo, um PRNG pode ter a distribuição estatística equiprobável necessária, mas também ser inteiramente determinístico.
Conflitar conceitos ortogonais é o que as pessoas com baixo QI. Espero que seja melhor do que isso nesta comunidade!