sly2m: (default)
[personal profile] sly2m
f1cd70b077b07488a78f3edf9083bb89

Многие слова, многие печали. Одной из самых коротких научных статей считается математическое опровержение гипотезы Эйлера.

Сегодня любой пятиклассник слышал про Великую теорему Ферма, сформулированную в 1637 году Пьером Ферма в виде:

a1n + a2n = bn


Если число степени n = 2, мы получаем обычную теорему Пифагора, когда квадрат гипотенузы равен сумме квадратов катетов, ее простейшим решением является выражение:

32 + 42 = 52


известное еще очень древним египтянам сильно до рождества Христова.

egipetskiy-treugolnik


Ферма предположил, что при n > 2 задача не имеет решений в целых числах. Историки считают, что Ферма обманул читателей и на самом деле не знал полного решения собственной теоремы. По крайней мере, он нашел и привел только самое простое частное доказательство для n = 4.

Через 133 года Леонард Эйлер доказал теорему для n = 3, а еще через 55 лет Дирихле решил ее (в смысле математически доказал, что решения нет) для n = 5. Дальше пошло-поехало, подоспели доказательства для иных частных случаев, где n=7 и так далее. Полное решение Великой теоремы Ферма было найдено лишь в 1994 году английским математиком Эндрю Уайлсом, причем оказалось настолько заумным, что другие математики в течение семи(!) лет пытались прочитать формулы и понять в чем суть, и нет ли в доказательстве ошибок, окончательно подтвердив, что решение верное только к 2001 году.

Великая теорема Ферма уже 22 года как доказана, %username%!

А в 1770 году Эйлер, окрыленный успехами в частичном доказательстве теоремы Ферма, задумал ее расширить и усугубить. Он сформулировал так называемую "гипотезу Эйлера", которая похожа на теорему Ферма, но имеет более общий вид:

a1n + a2n + ... + akn = bn


Эйлер заявил, что данная формула не имеет целочисленных решений при k < n, то есть, если количество слагаемых слева меньше степени уравнения, то решений нет, например:

a14 + a24 + a34 = b4


или

a15 + a25 + a35 + a45 = b5


и так далее нерешаемо, а теорема Ферма - лишь частный и упрощенный случай.

В 1966 году математики Ландер, Паркин и Селфридж опубликовали научную работу на полстранички, она выглядела так:

Capture2


и содержала найденное ими опровержение гипотезы Эйлера.

Date: 2016-12-07 08:02 pm (UTC)
From: [identity profile] sly2m.livejournal.com
Ну, как сказать, суперкомпьютер...

Image

Date: 2016-12-07 08:25 pm (UTC)
From: [identity profile] friendlystrnger.livejournal.com
а, вот он какой CDC...
/* первая ассоциация была: Center for Disease Control :) */

Date: 2016-12-07 11:00 pm (UTC)
From: [identity profile] piter239.livejournal.com
Для своего времени это и был суперкомпьютер - с отрывом самый мощный в мире.

Википедия считает, что

"The CDC 6600 is generally considered to be the first successful supercomputer, outperforming its fastest predecessor, the IBM 7030 Stretch, roughly by a factor of three. With performance of up to three megaFLOPS,[3][4] the CDC 6600 was the world's fastest computer from 1964 to 1969, when it relinquished that status to its successor, the CDC 7600."

Date: 2016-12-08 10:13 am (UTC)
From: [identity profile] siron-nsk.livejournal.com
Не известно сколько времени этот CDC перебирал варианты? Интересно посчитать, сколько потребуется современному.

Date: 2016-12-08 01:50 pm (UTC)
From: [identity profile] a2is.livejournal.com
Тупой перебор пятёрок (5 вложенных циклов) на java написал за пару минут.
Результат получен за 50 секунд.
Процессор Haswell, ОС Linux Ubuntu, JDK8

Теперь можно улучшать результат - алгоритм поумнее, параллельные вычисления и т.д. Но лениво.

PS: Одновременно с расчётом на компе крутились - сервер БД MySQL, медиасервер Plex, с которого смотрелся фильм в HD, работало IDE Eclipse Neon плюс качались торренты.
Edited Date: 2016-12-08 02:03 pm (UTC)

Date: 2016-12-08 03:44 pm (UTC)
From: [identity profile] siron-nsk.livejournal.com
Охренеть.

Date: 2016-12-21 12:28 am (UTC)
From: [identity profile] speshuric.livejournal.com
50 секунд как-то нереально долго. У меня почти тупой перебор в 0,1 с примерно уложился (не java, но jvm). Ну да, я степени закешировал и последнее число проверяю по HashSet, а не в цикле. Но не в 500 же раз.

Date: 2016-12-21 01:34 pm (UTC)
From: [identity profile] a2is.livejournal.com
Дело именно в кешировании. Я не кешировал.

Date: 2016-12-08 02:28 pm (UTC)
From: [identity profile] sly2m.livejournal.com
На дерти чувак написал программу на С++ с такими результатами:

C++, четыре вложенных цикла + поиск в хеш–таблице
Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz
Если ограничить цикл числом 150, то отрабатывает за 0.3 секунды
Если ограничить цикл числом 256, то отрабатывает за 1.5 секунды

Date: 2016-12-08 03:46 pm (UTC)
From: [identity profile] siron-nsk.livejournal.com
Охренеть.

Date: 2016-12-11 01:55 pm (UTC)
From: [identity profile] a2is.livejournal.com
Я думаю, что ограничивать циклы нечестно. Как будто в конец учебника заглянул, где ответы.
Однако авторы пишут о "smallest instance". В общем, интересно, а какое следующее решение? Есть ли оно?

Date: 2016-12-12 03:46 am (UTC)
From: [identity profile] sly2m.livejournal.com
Конечно есть. Их полно (https://ru.wikipedia.org/wiki/%D0%93%D0%B8%D0%BF%D0%BE%D1%82%D0%B5%D0%B7%D0%B0_%D0%AD%D0%B9%D0%BB%D0%B5%D1%80%D0%B0), и не только в степени 5.

Date: 2016-12-20 11:59 pm (UTC)
From: [identity profile] speshuric.livejournal.com
Поезд, конечно, давно ушёл, но я только сейчас добрался до этого поста. Про 0.3 секунды на С++ очень странно. У меня на kotlin (это язык который в jvm компилируется) получается 0,1 дома и 0,2 в публичной тестовой виртуалке на http://try.kotlinlang.org/
Тоже в лоб перебором с поиском по хешу.

Date: 2016-12-21 12:21 am (UTC)
From: [identity profile] sly2m.livejournal.com
У тебя проц видимо хороший. А тот человек из моего поста свой сделал (https://habrahabr.ru/post/317588/).

Date: 2016-12-21 12:52 am (UTC)
From: [identity profile] speshuric.livejournal.com
Проц шестилетней давности. Хотя, да, на момент выпуска один из топовых. Ну и я понял, где схитрил. Честно говоря - на автомате схитрил, я даже не особо в тему вдавался.

https://gist.github.com/speshuric/e9edae0f0cdf324311466e84a94ea865
(код понятен даже если не знать kotlin)
1. Я сразу искал y>x1>=x2>=x3>=x4, причем цикл по y от 0 вверх, а по остальным от предыдущего вниз.
2. И снизу ограничил: x1^4>=y^4/4, x2^4>=(y^4-x1^4)/3, x3^4>=(y^4-x1^4-x2^4)/2 - оно как бы следует из предыдущего.

Date: 2017-01-05 10:47 am (UTC)
From: [identity profile] victor1234.livejournal.com
А на современных компах быстро не посчитаешь даже по известному диапазону. Кроме разве что такого читеризма:

for i=7:1:37
for j=i:1:94
for k=j:1:120
for l=k:1:143
for m=l:1:144
if (i^5+j^5+k^5+l^5-m^5==0)
res=[i,j,k,l,m]
break
end
end
end
end
end
end
Edited Date: 2017-01-05 10:48 am (UTC)

July 2018

S M T W T F S
1234567
89101112 1314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 23rd, 2025 11:06 am
Powered by Dreamwidth Studios