Читать «Я нашел смысл жизни: Автореферат мировоззрения с эпизодами автобиографии» онлайн - страница 136

Владимир Александрович Цай

5. Основное противоречие программирования

Итак, современный компьютер интеллектом не обладает – он не имеет встроенной логики и не может самостоятельно выводить решения. Компьютер программируется человеком-программистом. Это означает, что вывод решений берет на себя программист, а компьютер получает готовые решения в виде программ и выполняет их по запросу.

Рассмотрим задачу поиска пути через лес, в котором пересекается множество дорог. Пусть каждому пересечению соответствует свой номер. Тогда путь через лес можно представить списком номеров, который начинается с номера входа в лес и заканчивается номером выхода из леса, а любые два последовательных номера связаны между собой. Другими словами, для того чтобы пройти через лес необходимо следовать от номера к номеру в соответствии с этим списком.

Например, если связи номеров сети из 99 пересечений представить множеством фактов типа:

связаны (1, 2),

связаны (2, 5),

связаны (9, 17),

……

связаны (81, 99),

то путь через лес можно представить списком номеров – (1, 2, 5, …, 9, 17, …, 81, 99).

Если человек не видит леса с высоты, то он будет искать путь, перебирая все варианты. Этот процесс можно описать следующим образом: найти путь из начального узла в конечный узел равносильно тому, что необходимо дойти до ближайшего доступного узла и затем найти путь из этого ближайшего узла до конечного. Естественно, если из этого ближайшего узла пути нет, то необходимо попробовать другой ближайший узел. Таким образом, перебирая все возможные варианты, можно найти путь через лес, если этот путь существует. Описанное знание можно представить логически:

найти_путь (Начало, Конец, Путь), если связаны (Начало,

Конец), Путь = Начало. Конец. найти_путь (Начало, Конец, Путь), если связаны (Начало,

Ближний) и найти_путь (Ближний, Конец, Путь).

Первое предложение фиксирует тот факт, что если Начало и Конец связаны, то их список и есть искомый Путь. В противном случае во втором предложении выбирается Ближний узел и уже от него строится Путь до узла Конец. Имея перечисленные выше факты и знания, можно задать запрос: найти_путь (1, 99, Путь) и получить соответствующий список номеров.

Если человек видит лес сверху, он может сразу построить путь и в готовом виде ввести его в компьютер. Это равносильно тому, что человек решает задачу и вводит решение в компьютер.

Итак, существует два подхода к программированию компьютера, составляющие основное противоречие программирования – составление программ и представление знаний.