Можно ли собрать самоорганизующий движок который используя набор алгоритмов сам выбирал бы нужный алгоритм для выполнения задачи?

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Можно ли собрать самоорганизующий движок на каком-нибудь языке программирования, который используя набор алгоритмов и некоторые правила сам выбирал нужный алгоритм для выполнения задачи?

Например:

Есть набор алгоритмов:

"a = b + c";

"b = a - c";

"c = a - b".

Есть набор правил:

a(b,+c);

b(a,-c,+d);

c(a,-b).

где "+" и "-" это действия, которые применяются над переменными.

Каждому правилу соответствует свой алгоритм, или набор алгоритмов:

a(b,+c) : "a = b + c", "a = b" (c = 0), "a = c" (b = 0) и т.д.;

b(a,-c,+d) : "b = a - c + d", "b = a" (c = 0, d = 0) и т.д.;

c(a,-b) : "c = a - b", "c = a" (b = 0), "c = -b" (a = 0) и т.д.

Как видим, некоторые правила равны (пересекаются) по алгоритмам в "одинаковых" условиях:

a(b,+c) = b(a,-c,+d) : "a = b" = "b = a" (с = 0, d = 0)

a(b,+c) = c(a,-b) : "a = c" = "c = a" (b = 0)

Решая задачи движок для выбора правила действует по принципу "от меньшего к большему", и использует первым алгоритм, в которм имеетя наибольшее количество условий с предустановленными значениями переменных; тем самым наиболее вероятным и "экономичным" будет вариант с малыми "затратами".

Так, по приведенному примеру решим задачу:

x + y = 15. Найти все возможные целые значения неизвестных x и y.

Решение:

1. Построим модели функции и найдем алгоритмы с возможными целыми значениями переменных:

для 15 = x + y модель a(b,+c) алгоритмы "a = b + c", "a = b" (c = 0), "a = c" (b = 0);

для x = 15 - y модель c(a,-b) алгоритмы "c = a - b", "c = a" (b = 0).

2. Выбираем правило с наименьшим количеством алгоритмов: c(a,-b).

3. Выбираем первым алгоритм, в котором результат уже известен (значение уже предустановлено): "c = a" (b = 0), т.е. y = 0. Таким образом, по алгоритму x = 15. Найдены первые возможные значения!

4. Далее смотрим на остаточные алгоритмы и видим, что в них более нет вариантов предустановленными значениями переменных. Поэтому делаем поиск из имеющихся моделей функций ту модель, в которой опять имеетя наибольшее количество условий с предустановленными значениями переменных: a(b,+c).

5. Выбираем первым алгоритм "a = c" (b = 0): в нашем случае x = 0, y = 15. Найдены вторые возможные значения!

6. и так далее. Причем решение каждого алгоритма обусловлено некоторой логикой. Например, для модели c(a,-b) с алгоритмом "c = a - b" применяется метод перебора значений b от найденного минимального значения b, до найденного максимального значения b. В нашем случае для "x = 15 - y" перебираем значения "y" от 0 до 15, не включая их.

Таким образом наш движок ищет подходящий путь по минимальным "затратам".

В теории надеюсь понятно. А на практике такое можно реализовать или уже есть примеры?

Комментарии: