powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Приличный Трёп [закрыт для гостей] / Обратные задачи и "тяжёлые" ассерты
3 сообщений из 3, страница 1 из 1
Обратные задачи и "тяжёлые" ассерты
    #1747765
Droog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В науке есть понятие прямых и обратных задач. Грубо говоря, зная структуру рассчитать спектр - это решение прямой задачи, а зная спектр расшифровать структуру - это решение обратной задачи (на самом деле в структурной химии используются скорее например рентгенограммы, а не спектры, но это частности).
Можно взять серию уравнений:
1) y=ax+b
2) y=ax^2+bx+c
3) y=ax^3+bx^2+cx+d
4) y=ax^4+bx^3+cx^2+dx+e
...
Зная x найти y - это решить прямую задачу, а зная y найти x - это решить обратную задачу.
Есть общие признаки, позволяющие отличить прямую задачу от обратной:
1) Её можно решить в любом интервале x;
2) Для любого x решение единственно;
3) Решение относительно простое по сравнению с обратной задачей
4) Сложность (время) и надёжность решения прямой задачи практически не зависит от того, чему равен x или какое было начальное приближение.
5) Ещё одна связь между прямой и обратной задачей: существуют очень простые и универсальные методы решения обратной задачи через прямую, например простой перебор или градиентный спуск. Хотя они обычно далеко не эффективны в плане требуемых ресурсов.
В программировании всё это, как я полагаю, вполне применимо. Например, работа нейронной сети - это решение прямой задачи, а обучение нейронной сети - это решение обратной.
Я предлагаю рассматривать ассерт как решение прямой задачи, позволяющий проверить на каких-то этапах, как решается обратная. И если начать мыслить таким образом, быстро приходят в голову новые идеи, например идея тяжёлых ассертов.
Предположим, у нас есть массив из N элементов, каждый i-й элемент это два массива из Mi элементов; в первом массиве расположены номера индексов во втором, а во втором наоборот в первом. Т.е. массивы Mi могут быть, например, 231 и 312, или 12 и 21. В массивы периодически вносятся изменения, и нужно проверять ассертами их самосогласованность. Так вот простой ассерт - это проверить i-й элемент большого массива, а тяжёлый ассерт - проверить сразу весь большой массив со всеми вложенными подмассивами. Тяжёлый ассерт съедает много ресурсов, и его нужно включать только на время.
Пример становится более понятным, если большой массив имеет иерархичную структуру, с рекурсией. Тогда тяжёлый ассерт один, а простых ассертов много. Очевидно что код будет проще, если везде вставлять тяжёлый ассерт, хотя такой код работать будет медленно.
...
Рейтинг: 0 / 0
Обратные задачи и "тяжёлые" ассерты
    #1749151
Дырокол
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Колю дыры
прямая задача 2+2 = ?
обратная 4 = ? + ?
...
Рейтинг: 0 / 0
Обратные задачи и "тяжёлые" ассерты
    #1758105
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор задачи, опубликованной в журнале "Шахматы в СССР", в 1976 году, Никита Михайлович Плаксин, спрашивает Вас: На доске мат?
scale_1200.webp
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Приличный Трёп [закрыт для гостей] / Обратные задачи и "тяжёлые" ассерты
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]