[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]

[Burichan] [Foliant] [Futaba] [Greenhell] [Gurochan] [Photon] - [Home] [Manage] [Archive]

[Return]
Posting mode: Reply
Leave these fields empty (spam trap):
Name
Link
Subject
Comment
File
Verification
Password (for post and file deletion)
  • Supported file types are: GIF, JPG, PDF, PNG
  • Maximum file size allowed is 20480 KB.
  • Images greater than 200x200 pixels will be thumbnailed.

File: 1375619184645.gif -(31273 B, 227x172) Thumbnail displayed, click image for full size.
31273 No.95237  

Допустим, стоит некая задача. В приоритете только время ее решения. Допустим, известен алгоритм решения и для него известно затрачиваемое время.
Вопрос: в общем случае для достижения минимального времени решения нужно сначала искать более эффективный алгоритм (поиск займет N времени) и потом его выполнять, или сразу выполнять известный алгоритм?
Возможен ли вообще ответ на такой вопрос?
Если нужно сначала найти более эффективный алгоритм, то, по аналогии, тогда нужно искать более эффективный алгоритм нахождения более эффективного алгоритма? Что делать с рекурсией?

>> No.95238  

Как правило под "задачей" подарзумевается что-либо, что в результате сводится к чему-то вроде дифура, который надо решить, чтобы добраться до сути.
Нахождение более эффективного алгоритма решения обобщенной задачи, в общем-то, всегда приоритетно, поскольку она обобщенная. То есть, мы можем провести исследование один раз, оно будет в разу больше самой задачи, но зато потом оно позволит решать задачи такого же типа гораздо быстрее.

>Что делать с рекурсией?

Ничего особенного рекурсия обычно вырубается вышматом, если становится более-менее очевидной. В крайнем случае, если полученное уравнение - нелинейный дифур, его можно отпинать численными методами с нужной точностью.
Вообще, есть целый раздел матана, посвещенный этой вот фигне - решению задач, но я в нем ни бельмеса не знаю.

>> No.95239  

А как можно оценить эффективность алгоритма кроме попытки его выполнить и измерить время выполнения? Получается, что для выбора оптимального из N алгоритмов задачу уже придётся решить N раз, притом что требуется решить её лишь один раз.
Можно, конечно, попробовать протестировать алгоритмы на примере короткой эталонной задачи, но тут есть подвох. На примере классической задачи о сортировке массива видно, что метод пузырька на коротком массиве оказывается эффективнее метода последовательных максимумов, а вот на длинных безнадёжно проигрывает.
Вывод: эффективнее всего выбрать случайным образом любой из N алгоритмов и решить задачу с его помощью.

>> No.95240  

>>95238

>Нахождение более эффективного алгоритма решения обобщенной задачи, в общем-то, всегда приоритетно, поскольку она обобщенная. То есть, мы можем провести исследование один раз, оно будет в разу больше самой задачи, но зато потом оно позволит решать задачи такого же типа гораздо быстрее.

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

>А как можно оценить эффективность алгоритма кроме попытки его выполнить и измерить время выполнения?

Рассчитать время выполнения. Считаем, что это возможно для каждого алгоритма и сам расчет занимает время.

>> No.95241  

>>95239
Нет, там есть более общие методы, которые могут помочь с классификацией задачи и методами, которыми ее можно решить. Я имею в виду математические методы, поскольку задача приведения ее к виду, пригодному к обработке, наверняка займет куда больше времени чем ее решение в таком виде - в общем случае.
Правда, если речь идет о непосредственной задачи на стороне самой вычислительной системы, тут начинают действовать какие-то другие правила.

>Вывод: эффективнее всего выбрать случайным образом любой из N алгоритмов и решить задачу с его помощью.

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

>> No.95242  

>>95241

> Тупейшую сортировку ты как стал бы делать прямо сейчас?

В абсолютном большинстве случаев я применяю метод "пузырька", так как в своё время додумался до него сам. Ешё до того, как начал читать умные книжки. Понятно, что я изобрёл велосипед, но я его всё-таки изобрёл.

>> No.95243  

>>95237
Ты формализуй задачу сначала.

>Возможен ли вообще ответ на такой вопрос?

Пока ты не уточнил вид задачи, и каким образом ищется новый более эффективный алгоритм, ответ будет писан вилами по воде. Не решаются такие задачи в общем случае. Это как бы еще одна Формула Всего.
Пример конкретный: задача найти массив коэффициентов для нейросети заданной архитектуры, такой, чтобы нейросеть аппроксимировала известную функцию многих аргументов заданных (...дается функция...). Исходный алгоритм поиска коэффициентов: (...дается алгоритм...). Метод поиска нового алгоритма: (...дается метод поиска нового алгоритма...).

>>95238

>Как правило под "задачей" подарзумевается что-либо, что в результате сводится к чему-то вроде дифура, который надо решить, чтобы добраться до сути.

Ха-ха. Я уверен, есть множество задач, которые дифурами не описываются.

>> No.95245  
File: 1375633373437.png -(482494 B, 500x700) Thumbnail displayed, click image for full size.
482494

Если время поиска лучшего алгоритма << временеи решения первым попавшимся алгоритмом то вполне логично вначале поискать лучший алгоритм, если соизмеримо или меньше, то проще решить задачу первым попавшимся алгоритмом.

>> No.95256  

Левин: универсальный поиск.
Юрген Шмидтхубер: машина Гёделя, OOPS.
Маркус Хуттер: The shortest and fastest algorithm for solving any well-defined problem.

>> No.95258  

Каким-то схожим вопросом я задался вчера, прочитав статью TCP ex Machina из соседнего треда.



Delete Post []
Password

[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]