Я написал код, в котором записаны все правила судоку (одно появление цифры в столбце, строке и квадрате). Код принимает входные данные (незаполненную сетку судоку) и возвращает решение, переводя логические предложения в формат DIMACS и используя решатель SAT.
Учитывая, что алгоритм соблюдает правила, принимает данные и использует эти данные для формирования выводов на основе импликаций (например, если в первой ячейке есть 1, во второй ячейке не может быть 1), считается ли этот код " экспертная система"? Спасибо.
@user3386109 user3386109 Ахах, понятно. Причина, по которой я спрашиваю, на самом деле не в том, чтобы попытаться потешить свое эго; Я пытаюсь по-настоящему понять, что значит для чего-то быть экспертной системой, и подходит ли такой алгоритм, как тот, который я описал, под это определение. Однако вы правы, это не более чем ваш заурядный решатель судоку.
Проблема с термином "экспертная система" заключается в том, что это больше шумиха, чем смысл. Люди, использующие этот термин, обычно перепродают технологию. Суть экспертной системы заключается в том, что это большая база данных, доступ к которой осуществляется через специализированную поисковую систему. Одним из примеров является медицинская «экспертная система». В системе имеется большая база данных заболеваний. Врач вводит список симптомов пациента и результаты анализов. Затем поисковая система генерирует список возможных заболеваний. Также может быть предложено провести дополнительные анализы или попробовать лекарства. Итог: это просто еще одна поисковая система.
@user3386109 user3386109 Ха, я никогда не думал об этом таким образом, но я полагаю, ты прав. С другой стороны, по той же самой логике нельзя ли сказать, что предложенный мной алгоритм — это просто еще одна поисковая система? Я не хочу быть нахальным.
Я полагаю, вы могли бы сказать, что он ищет решение, но я не вижу большой базы данных. Если бы я внедрял судоку в качестве экспертной системы, я бы создал база данных каждого когда-либо опубликованного решения судоку. При представлении нового судоку поисковый движок будет искать любое решение, содержащее заданные числа в заданных местах. Поисковая система будет индивидуальные, чтобы распознавать повороты, зеркальное отображение и замены (например, замена 3 на 1, 1 на 5 и 5 на 3 не меняет головоломку).
Это, конечно, было бы очень плохим способом реализации решателя судоку. Он использует много места для хранения базы данных, занимает больше времени, чем другие решатели, и в конечном итоге терпит неудачу, если не найдено подходящего решения. Но это будет квалифицироваться как экспертная система.
@user3386109 user3386109 А, кажется, я начинаю понимать. Идея экспертной системы на самом деле состоит не в том, чтобы иметь форму правил, по которым вы можете вывести возможное решение, а в том, чтобы иметь много данных, которые говорят: «Если ваш ввод соответствует этим данным, то ваше решение может быть таким». В результате наличие больших объемов данных обычно указывает на точное решение. Я ошибся? Большое спасибо за вашу помощь, я ценю это.
Я думаю, ты понял. Но остерегайтесь дезинформированных СМИ и болтливых продавцов :)
@ user3386109 О, я пытаюсь. Количество футуристической чепухи, которую мне обычно приходится просеивать, прежде чем я нахожу что-то существенное, быстро давит на мою душу. Спасибо еще раз!
Рад быть полезным!
Является ли программа экспертной системой, субъективно, но я бы сказал, что если ваша программа не кодирует нетривиальные знания, полученные от эксперта в предметной области, это не экспертная система. Если вы не можете научить другого человека практически делать то, что делает ваша программа, это не экспертная система.
По этому определению то, что вы сделали, вероятно, не является экспертной системой, так как человеку потребовалось бы слишком много времени, чтобы использовать ту же технику. Я написал средство решения судоку, используя производственную систему (https://sourceforge.net/p/clipsrules/code/HEAD/tree/branches/63x/examples/sudoku/), которую я считаю экспертной системой. Закодированные знания были получены с веб-сайтов с передовыми методами, которые люди могут использовать для решения головоломок судоку. Все закодированные методы могут быть практически использованы людьми для решения головоломок (хотя некоторые из более сложных методов раздвигают эту границу).
Хотя мой решатель судоку может решать гораздо более сложные головоломки, чем я, называть его экспертной системой не означает его сложности. Есть лучшие подходы к решению чрезвычайно сложных головоломок судоку, чем подражание человеческим подходам.
Большое спасибо за помощь и в этом вопросе. Вообще говоря, можно ли с уверенностью предположить, что экспертные системы в том виде, в каком они определены, на самом деле не так уж и полезны в видеоиграх? Разве NPC обычно не программируются с использованием системы, основанной на правилах без ожиданий, или даже автомата с конечным числом состояний?
По определению, которое я даю, производственная система, используемая в игре, вряд ли будет экспертной системой. Лучше описать это более объективным термином, например, на основе правил, конечным автоматом или нейронной сетью, в зависимости от базовой технологии, используемой для логики NPC.
Понимаю. Последний вопрос, тогда я оставлю вас в покое. Исходя из описания моего кода, будет ли этот решатель считаться системой, основанной на правилах? С одной стороны, он использует правила для формирования выводов, с помощью которых решает проблему. С другой стороны, машина на самом деле не получает непрерывную информацию, что отличается от того, что я видел в большинстве примеров систем, основанных на правилах; он получает головоломку и возвращает решение. Спасибо!
Судя по вашему описанию, это больше похоже на программирование ограничений или логическое программирование, чем на программирование на основе правил. Программирование, основанное на правилах, не имеет эксклюзивного использования слова «правило», но я думаю, что некоторых может сбить с толку то, что вы называете свою программу системой, основанной на правилах, когда правила не имеют возможности явно добавлять или удалять данные.
Когда вы говорите добавить или удалить данные, вы имеете в виду выводы, к которым машина приходит при выполнении определенных условий, которые машина затем сохраняет?
Нет, я имею в виду правила изменения данных.
Извините, я не хотел показаться грубым. Не могли бы вы привести пример того, что вы имеете в виду, когда говорите, что правила меняют данные?
если тема сообщения содержит «Нигерийский принц», установите почтовый ящик сообщения как «Нежелательная почта».
Ах я вижу. В примере с электронной почтой данные, поступающие в рабочую память, изменены. В моем алгоритме любые поступающие данные служат только для поиска решения, но остаются неизменными. Большое спасибо за вашу помощь. Довольно сложно по-настоящему понять идею, просто взглянув на ее определение. Я очень ценю это!
Точно. В судоку утверждение, такое как число не может появляться более одного раза подряд, более точно описывается как ограничение, а не правило в смысле программирования, но в общем смысле (например, в том, чтобы рассказать кому-то, как решить головоломку судоку). ) большинство людей назовут это правилом.
В 80-х я написал клон движка экспертной системы Emycin. Одной из важных характеристик была возможность для пользователя задать ЗАЧЕМ, чтобы экспертная система получила какое-то заключение. Система могла бы ответить (почти на естественном языке), что она применила такие-то и такие-то правила, чтобы прийти к заключению.
В системе такого типа знание моделируется и реализуется (инженером-когнитивистом) в виде явного набора правил. Эти правила являются объектами, известными движку. Движок может активировать правила (вперед или назад или, возможно, с помощью метаправил...) и может регистрировать сработавшие правила и, таким образом, объяснять свои выводы.
(это мой смысл для экспертных систем).
Если вы общаетесь со СМИ и/или пытаетесь получить финансирование для своего стартапа, то да, это определенно экспертная система. OTOH, если вы разговариваете с инженерами/учеными, то это еще один решатель судоку, не более того.