HH>Почему все так уверены, что человеку свойственно ошибаться? Потому что это сказал Сенека?
Не только, квантовая физика вообще утверждает что случайность и неопределенность это
имманентное свойство нашей вселенной. Так что ошибки неизбежны и не только у человека.
Здравствуйте, FR, Вы писали:
FR>Не только, квантовая физика вообще утверждает что случайность и неопределенность это FR>имманентное свойство нашей вселенной. Так что ошибки неизбежны и не только у человека.
Тут наконец-то следует обратить внимание на многозначность слова "ошибка".
Если говорить о метафоре с ИИ, которую я привел выше, то используемое мной значение слова ошибка станет не таким расплывчатым.
Мы говорим, что ИИ ошибся, если из известной ему информации он сделал неверный вывод.
Я предлагаю, по крайней мере ДЛЯ НАЧАЛА, использовать именно это значение.
В качестве противоположной крайности, приведу следующий пример.
Робот, управляемый нашим ИИ, вышел из дому, и тут на него упал метеорит (ну прямо как у Азимова).
Можно сказать, что это была его ошибка. Только вот он не только не имел информации позволяющей избежать этой ошибки, но и (будем считать) не имел никакой возможности получить эту информацию. Так вот, это значение слова ошибка я не использую.
Этот случай здесь описан, чтобы лучше стал понятен смысл слова ошибка, который я предлагаю для начала использовать.
При этом мы сможем перейти в чуть более практическое русло, чем рассуждения о квантовой неопределенности.
J>ну это вам лучше знать, почему вы постоянно на одни и те же грабли наступаете Более другие человеки ваше "этое" делают
Вот. Грабли — ключевое слово.
Я писал не только о себе, но и вообще о том, как программисты пишут программы.
Идея номер два.
Представьте, что Вы пишете какую-то нетривиальную часть программы.
Скажем, ядро Вашей системы, которое должно работать как часы.
Естественно, что Вы захотите все тщательно продумать.
Выделить основные сущности, продумать основные операции, основные сценарии, просчитать все на несколько шагов вперед.
Вполне вероятно, что Вы будете все это переписывать еще десять раз, но дело не в этом.
Вот этот набор основных сущностей и основных операций между ними я и называю МОДЕЛЬЮ.
А будучи сформулированной на языке математики, она становится математической моделью.
Что же мы имеем в реальности. Программисты пишут программу. Тестеры находят ошибку. Эта ошибка свидетельствует о том, что какая-то часть системы была не продумана.
Программист эту ошибку исправляет.
На чем все дело обычно и заканчивается. Никакого анализа обычно не делается, на это просто нет времени.
В результате через некоторое время тестер находит другую, но в чем-то похожую ошибку в другой части системы.
А третью и четвертую ошибку тестеры не находят, потому что их можно найти только с помощью скурпулезного анализа, а воспроизвести их случайно довольно маловероятно. Эти ошибки найдут заказчики, ведь там систему будут использовать тысячи людей.
HH>Тут наконец-то следует обратить внимание на многозначность слова "ошибка". HH>Если говорить о метафоре с ИИ, которую я привел выше, то используемое мной значение слова ошибка станет не таким расплывчатым. HH>Мы говорим, что ИИ ошибся, если из известной ему информации он сделал неверный вывод. HH>Я предлагаю, по крайней мере ДЛЯ НАЧАЛА, использовать именно это значение.
согласен. это хорошее, конструктивное определение.
но в сложной задаче ошибки все равно заложены даже при таком определении понятия "ошибка".
для создания решения сложной задачи используется алгоритм последовательной композиции: решение большей задачи A складывается из решений меньших задач A1-An. Самый широкий класс ошибок при этом, что не учтено какое-то влияние решения задачи Ai на решение задачи Aj, приводящее к сбою в решении Aj (или к сбою и в Ai, и в Aj): например, решение задачи Ai в процессе выполнения может эксклюзивно захватывать инструменты, которые необходимы для решения задачи Aj.
При этом если сложность задачи композиции можно понизить до приемлимой O(n), O(n*log n), O(n^log n), в частности, через поиск субоптимальных решений вместо оптимальных, то сложность задачи отслеживания влияния подрешений друг на друга понизить нельзя.
такая антисиметрия связана с тем, что при поиске решения нам необходимо найти один произвольный вариант из множества всех вариантов (что можно делать даже методом тыка, если доля вариантов приводящая к результату достаточно велика по отношению ко всем вариантам), а при отслеживании влияния подрешений друг на друга необходимо проверить все варианты.
Здравствуйте, HrorH, Вы писали:
HH>Тут наконец-то следует обратить внимание на многозначность слова "ошибка". HH>Если говорить о метафоре с ИИ, которую я привел выше, то используемое мной значение слова ошибка станет не таким расплывчатым. HH>Мы говорим, что ИИ ошибся, если из известной ему информации он сделал неверный вывод. HH>Я предлагаю, по крайней мере ДЛЯ НАЧАЛА, использовать именно это значение.
Я не против, но это не поможет.
Я уже тут давал ссылку на "Пределы доказуемости"
Из неприводимости числа Ω следует, что всеобъемлющей математической теории существовать не может. Бесконечное множество битов Ω составляет бесконечное множество математических фактов (является ли каждый выбранный бит единицей или нулем), которые не могут быть выведены из каких бы то ни было принципов, более простых, чем сама последовательность битов. Значит, сложность математики бесконечна, тогда как любая отдельная теория «всего на свете» характеризуется конечной сложностью и, следовательно, не может охватить все богатство мира математических истин
Очень большая часть реальных задач именно такого "не упрощаемого" типа. Модели в их решении почти бесполезны.
HH>А третью и четвертую ошибку тестеры не находят, потому что их можно найти только с помощью скурпулезного анализа, а воспроизвести их случайно довольно маловероятно.
и это может означать, что скурпулезный анализ требует проверки, например, 10^30 различных вариантов, что является на сегодня нерешаемой задачей.
при поиске ошибок мы имеем дело с NP-задачей, которая нерешаема по определению.
Здравствуйте, HrorH, Вы писали:
HH>Представьте, что Вы пишете какую-то нетривиальную часть программы. HH>Скажем, ядро Вашей системы, которое должно работать как часы. HH>Естественно, что Вы захотите все тщательно продумать. HH>Выделить основные сущности, продумать основные операции, основные сценарии, просчитать все на несколько шагов вперед. HH>Вполне вероятно, что Вы будете все это переписывать еще десять раз, но дело не в этом. HH>Вот этот набор основных сущностей и основных операций между ними я и называю МОДЕЛЬЮ. HH>А будучи сформулированной на языке математики, она становится математической моделью.
Проблема в сложности модели, нет никаких гарантий (а та же невыводимость гарантирует обратное для большого класса задач)
что эта модель будет проще чем решение в виде программы.
FR>Я уже тут давал ссылку на "Пределы доказуемости"
это не достаточное условие. необходимо еще показать, что при решении реальных проблем нельзя обойтись с помощью конечного множества математических фактов.
Здравствуйте, DarkGray, Вы писали:
FR>>Я уже тут давал ссылку на "Пределы доказуемости"
DG>это не достаточное условие. необходимо еще показать, что при решении реальных проблем нельзя обойтись с помощью конечного множества математических фактов.
Такое доказательств практически бесполезно, конечность скажем в всего-то 2^30 (жалкий гигабайт) на практике равнозначна бесконечности.
FR>Такое доказательств практически бесполезно, конечность скажем в всего-то 2^30 (жалкий гигабайт) на практике равнозначна бесконечности.
этот контрдовод не опровергает исходный мой посыл, что необходимо еще показать, что, например, для решения реальных задач недостаточно алгоритмов, правильность которых можно доказать с помощью алгоритмов с вычислительной сложностью меньше 2^30, допустим.
Здравствуйте, igna, Вы писали:
В>>Золотые слова. Работа программиста сравнима с работой инженера проектирующего самолет, но при этом обладает таким вреднейшим качеством, как кажущаяся легкость модификации уже сделанного. I>Совершенно согласен, хотя никак не могу понять, почему же математики не производят аналогичного говнища, несмотря на то, что "легкость модификации" результатов их труда вполне сопоставима.
Ещё как производят когда тоже что-то кодить пытаются. И ты будешь смеятся, это ещё большее говнище чем производит среднестатистический кодер но не математик.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, DarkGray, Вы писали:
DG>этот контрдовод не опровергает исходный мой посыл, что необходимо еще показать, что, например, для решения реальных задач недостаточно алгоритмов, правильность которых можно доказать с помощью алгоритмов с вычислительной сложностью меньше 2^30, допустим.
Это невозможно ни доказать ни показать, понятие "реальные задачи" слишком нечеткое. Если же нам нужно добиться целей топикстартера,
то есть избежать ошибок полностью, то показать мало, нужно полное формальное доказательство, что ни на практике ни в теории
просто невозможно.
Да и сразу чтобы избежать непонимания, для конкретных узких, жестко формализованных задач, все возможно, а местами уже и доказано.
FR>нужно полное формальное доказательство, что ни на практике ни в теории просто невозможно.
тезис о "невозможности в теории" — спорен.
данный тезис верен, только если под формальным доказательством понимать только доказательства ограниченные логикой первого порядка над жестко фиксированными термами. но ведь есть намного более сложные логики...
Здравствуйте, DarkGray, Вы писали:
DG>тезис о "невозможности в теории" — спорен. DG>данный тезис верен, только если под формальным доказательством понимать только доказательства ограниченные логикой первого порядка над жестко фиксированными термами. но ведь есть намного более сложные логики...
Не спорен, в общем виде он уже доказан для математики тем же Чейтином.
Частные "реальные задачи" никакой возможности выделить нет, в виду нечеткости термина.
FR>Не спорен, в общем виде он уже доказан для математики тем же Чейтином.
он доказан для бесконечных задач.
FR>Частные "реальные задачи" никакой возможности выделить нет, в виду нечеткости термина.
реальные задачи можно считать конечными, как по пространству, так и по времени.
зы
возьмем оракула, который для числа N выдает мат. аппарат M, который описывается числом бит N.
мат. аппарат мощности N умеет описывать с помощью N бит некоторое кол-во вариантов V: V(M(N), N).
если при этом кол-во вариантов V растет со скоростью близкой к функции Аккермана (или другого гипероператора), то даже при малых N кол-во вариантов превысит размер вселенной доступной для человека.
FR>>Не спорен, в общем виде он уже доказан для математики тем же Чейтином.
DG>он доказан для бесконечных задач.
Нет, почитай внимательнее те же пределы доказуемости. Там основной вывод что существует бесконечное
множество "невыводимых" математических фактов, при этом сам "факт" (представленный последовательностью
бит) может быть как конечным так и бесконечным.
Если полностью перевести на компьютерный язык, то для решения любой проблемы существует некая минимальная
программа которую упростить уже невозможно, и большинство таких программ будут достаточно большими
и сложными.
Основная цель использования моделей именно упрощение, Чейтин доказывает что невозможно для очень большого
класса задач.
FR>Если полностью перевести на компьютерный язык, то для решения любой проблемы существует некая минимальная FR>программа которую упростить уже невозможно, и большинство таких программ будут достаточно большими FR>и сложными.
можно взять все минимальные программы, которые решают произвольную возможную проблему в конечной части вселенной доступной человеку и закодировать их числами: каждое число обозначает одну минимальную программу. при этом если программа решает те же проблемы, что и другие программы из набора, то она выкидывается.
каждая программа получается простой — это всего лишь число.
и соответственно, из теории (и уж тем более из чейтина) не следует, что в этом наборе программ будет больше, чем, например, 2^30
Здравствуйте, DarkGray, Вы писали:
DG>можно взять все минимальные программы, которые решают произвольную возможную проблему в конечной части вселенной доступной человеку и закодировать их числами: каждое число обозначает одну минимальную программу. при этом если программа решает те же проблемы, что и другие программы из набора, то она выкидывается.
Вообще то у нас нет цели именовать уже готовые решения, у нас цель получить эти решения.
DG>каждая программа получается простой — это всего лишь число.
Ну и как с суперархиватором который хранит в себе все возможные архивы и нумерует их это не будет просто число, это будет
суперархиватор + число что заведомо сложнее пары просто архиватор + архив.
DG>и соответственно, из теории (и уж тем более из чейтина) не следует, что в этом наборе программ будет больше, чем, например, 2^30
И не следует что будет меньше.
Ну и сложность этого набора будет больше чем сумма сложности просто программ.