ЗНАЕТЕ ЛИ ВЫ?

Решение задач посредством прямого расчёта



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

Программа загружает исходные данные предметной области, которые представляют собой формулы для вычисления всех возможных параметров. В нашем случае эти формулы таковы:

Набор переменных:

x - текущая координата

xs – начальная координата

v – текущая скорость

vs – начальная скорость

astart – начальное ускорение

t - время

to – время (1й корень решения уравнения движения относительно t)

tt – время (2й корень решения уравнения движения относительно t)

Формулы для вычисления:

Затем пользователь загружает непосредственно задачу.

После нажатия кнопки решить мы получаем вывод вида:

Ввод (exec) начальной информации: xs = 30.0

Ввод (exec) начальной информации: vs = 10.0

Ввод (exec) начальной информации: astart = -10.0

Ввод (exec) начальной информации: x = 10.0

Step 0:

 

Применение шаблона to = ((-1)*(vs) + math.sqrt(((vs)**2) - 2*((xs)-(x))*(astart)))/(astart) для переменной to (to = ((-1)*(vs) + math.sqrt(((vs)**2) - 2*((xs)-(x))*(astart)))/(astart))

to

to = -1.23606798

Переменная to не удовлетворяет параметрам внешней среды (to > 0)

Step 1:

 

Применение шаблона tt = ((-1)*(vs) - math.sqrt(((vs)**2) - 2*((xs)-(x))*(astart)))/(astart) для переменной tt (tt = ((-1)*(vs) - math.sqrt(((vs)**2) - 2*((xs)-(x))*(astart)))/(astart))

tt

tt = 3.23606798

Таким образом, мы получаем решение задачи (подсчёт переменных посредством прямого математического расчёта, то есть подстановки) и проверку на удовлетворение полученного параметрам внешней среды.

Непосредственно рекурсия здесь не применяется, но если мы изменим условия задачи следующим образом:

То есть приведём задачу к виду «на какую максимальную высоту поднялось тело», то получим следующий вывод:

Ввод (exec) начальной информации: xs = 30.0

Ввод (exec) начальной информации: vs = 10.0

Ввод (exec) начальной информации: astart = -9.8

Step 0:

 

Применяем правило v=0

Применение шаблона x = (xs) + (vs)*t + (astart)*(t**2)/2 для переменной x (x = (xs) + (vs)*t + (astart)*(t**2)/2)

Какая-то из переменных правой части правил не может быть найдена в условиях и/или других правилах, ожидается name 't' is not defined

Поиск 't'

Применение шаблона t = (v-vs)/astart для переменной t (t = (v-vs)/astart)

t

t = 1.02040816

Step 1:

 

Применение шаблона x = (xs) + (vs)*t + (astart)*(t**2)/2 для переменной x (x = (xs) + (vs)*t + (astart)*(t**2)/2)

x

x = 35.10204082

Таким образом видно, что программа попыталась применить искомый шаблон для нахождения переменной x, но, так как не смогла его найти, то начала рекурсивный поиск шаблонов для решения концептуальной подзадачи – нахождения t как переменной, которая требуется для нахождения x. После того, как данная шаблон (формула) для нахождения t была найдена, идёт её применения. В случае ошибки программа бы рекурсивно перешла дальше и так до тех пор, пока не кончились бы все формулы. После того, как шаблон для t был найден, идёт вторая попытка применения шаблона для x. В случае успеха происходит вывод.

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

Таким образом, можно решать задачи практически любой сложности. Глубину рекурсии также можно регулировать во избежание попадания в бесконечный цикл. Можно выделить две базовые задачи эксперта по моделированию. Первая – это наполнение базы данных и знаний (по сути – математических формул) для предметной области. Вторая – правильное описание данных для нахождения решения данной конкретной задачи.

Принципиальная схема решения:

Судоку

Судоку (яп. 数独 су:доку) — популярная головоломка-пазл с числами. В переводе с японского «су» — «цифра», «доку» — «стоящая отдельно». Иногда судоку называют «магическим квадратом», что в общем-то не верно, так как судоку является латинским квадратом 9-го порядка. Судоку активно публикуют газеты и журналы разных стран мира, сборники судоку издаются большими тиражами. Решение судоку — популярный вид досуга.

Игровое поле представляет собой квадрат размером 9x9, разделённый на меньшие квадраты со стороной в 3 клетки. Таким образом, всё игровое поле состоит из 81 клетки. В них уже в начале игры стоят некоторые числа (от 1 до 9), так как незаполненное игровое поле не имеет смысла. В зависимости от того, сколько клеток уже заполнены, конкретную судоку можно отнести к лёгким или сложным.

Существует несколько методов решения судоку. Условно их можно разделить на две категории – логические и вычислительные. К вычислительным методам относится метод полного перебора (BruteForce). Логические – метод одиночного квадрата, закрытого кандидата, голой и скрытой пары, крыло, slicing and dicing и методы предположений различного уровня.

Методы составления судоку начинаются с составления правильного латинского квадрата. Дальнейшее составление идёт либо постепенным вычёркиванием чисел и проверкой на возможность решения, с оценкой сложности по количеству итераций и применяемому методы, либо открытием определённого числа закрытых клеток. Причём как в первом, так и во втором случае вообще говоря судоку может получиться недетерменированным (то есть допускающим несколько вариантов решения для одних и тех же исходных данных).

Исходный вид разработанной программы при решении судоку такой:

Решение судоку





Последнее изменение этой страницы: 2016-12-13; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.236.156.32 (0.008 с.)