WalkSAT
# WalkSAT

Na ciência da computação, GSAT e WalkSat são algoritmos de busca local para resolver Problemas de Satisfatibilidade Booleana.
Ambos os algoritmos trabalham com fórmulas da lógica booleana que estão na, ou foram convertidas para a, forma normal conjuntiva. Começa-se pela atribuição de um valor aleatório para cada variável na fórmula. Se a atribuição satisfaz todas as cláusulas, o algoritmo termina, retornando a atribuição. Caso contrário, uma variável é substituída e repete-se o passo anterior até que todas as cláusulas sejam satisfeitas. WalkSAT e GSAT diferem-se nos métodos utilizados para selecionar quais variáveis serão substituidas.
GSAT faz mudanças nas variáveis buscando minimizar o número de cláusulas não satisfeitas com a nova atribuição, ou escolhe aleatoriamente uma variável com alguma probabilidade.
WalkSAT escolhe uma cláusula que não está sendo satisfeita pela atribuição atual e então substitui uma variável dentro dessa cláusula. A cláusula é escolhida aleatoriamente entre as cláusulas não satisfeitas. A variável escolhida, tornará não satisfeitas o menor número de cláusulas anteriormente satisfeitas. Essa variável também é escolhida de forma aleatória, com alguma probabilidade. Quando se escolhe de forma aleatória, WalkSAT garante pelo menos uma chance de fixar uma atribuição atualmente incorreta dentro do número de variáveis na cláusula. Ao escolher uma variavel ideal de forma aleatória, WalkSAT irá fazer menos cálculos do que GSAT pois considerará uma quantidade menor de possibilidades.
O algoritmo poderá reiniciar com uma nova atribuição aleatória se não for encontrada uma solução por muito tempo. Essa é uma forma de escapar dos mínimos locais das cláusulas não satisfeitas.
Existem muitas versões da GSAT e WalkSAT. WalkSAT se mostrou particularmente útil na resolução de problemas de satisfabilidade produzidos pela conversão dos problemas de planejamento automatizado. A abordagem para o planejamento que converte problemas de planejamento em problemas de satisfatibilidade booleana é chamado satplan.
MaxWalkSat é uma variante do WalkSAT projetado para resolver o problema de satisfatibilidade ponderada, em que para cada cláusula tem um peso associado, e o objetivo é encontrar uma atribuição—uma que pode ou não satisfazer toda a fórmula—a qual maximizará o peso total das cláusulas satisfeitas por essa atribuição.