Почему этот запрос пролога является оба истиной и ложью?

Вот ответ на вопрос, который вы не задавали, но, вероятно, вы ищете:

  1. Создайте новый файл, назовите его index.html и убедитесь, что расширение действительно .html. Расширение может быть чем-то, что вам не нужно, если у вас не установлен этот флажок в Windows.
  2. Щелкните правой кнопкой мыши свой файл и откройте его в блокноте, затем вставьте его в него:
        
            
                Simple Page
                
                
            
            
                

    It works!

    • Lists work too
    • Lists work three
  3. Сохраните файл (Ctrl + S или File > Save)
  4. Откройте браузер ( chrome или firefox) и перетащите файл на панель вкладок или щелкните файл правой кнопкой мыши, выберите «114» и выберите браузер.

Теперь вы должны увидеть результат файла HTML.

30
задан false 6 January 2013 в 08:04
поделиться

2 ответа

[10] Он проверяет первое правило f(a,b) и не находит соответствия, но второе правило f(a,c) совпадает. Следовательно, f(a,c) верно. Кроме того, поскольку для f больше нет правил, нет смысла разрешать возникновение возврата назад - нет других возможных решений.

Теперь рассмотрим f(a,b). Пролог проверит первое правило и найдет совпадение. Следовательно, f(a,b) верно. Однако не все правила были исчерпаны. Следовательно, Prolog позволит продолжить поиск (если вы нажмете ;). Когда вы продолжите поиск и возврат, он обнаружит, что остальные правила, в частности f(a,c), не совпадают f(a,b). Следовательно, результат неверен.

27
ответ дан Michael Williamson 28 November 2019 в 00:11
поделиться

Просто в дополнение к ответу Майкла Уильямсона. Если вы хотите сказать Прологу, чтобы он прекратил поиск ответов после первого удачного попадания, то используйте разрезание (! ):

?- f(a, b), !.
true.

?- f(a, c), !.
true.
13
ответ дан 28 November 2019 в 00:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: