Привіт Гість ( Вхід | Реєстрація )

> Perfect Cuboid, Задача про цілочисельний паралелепіпед
x3mEn
Aug 6 2010, 00:01
Пост #1


snow catcher
*********

Група: Trusted Members
Повідомлень: 2 213
З нами з: 4-August 07
Користувач №: 563
Стать: Чол
Free-DC_CPID





Раціональний кубоїд (або цілочисельна цеглина, або ідеальний кубоїд) — прямокутний паралелепіпед,
у якого всі сім основних величин (три ребра, три лицьових діагоналі і просторова діагональ) є цілими числами, є однією з відкритих математичних проблем
Інакше кажучи, раціональний кубоїд — цілочисельне рішення системи діофантових рівнянь.

Досі невідомо, чи існує такий паралелепіпед. Комп'ютерний перебір не знайшов жодної цілочисельної цеглини з ребрами до 10^11.
Втім, знайдено кілька «майже цілочисельних» паралелепіпедів, у яких цілочисельними є всі величини, крім однієї:
— одна з лицевих діагоналей не ціле число.
, — одне з ребер не ціле число.
Велика кількість паралелепіпедів Ейлера (з нецілою просторовою діагоналлю, див. нижче).
Косокутні паралелепіпеди, у яких всі сім величин цілі. При цьому досить одного непрямого кута.
У 2005 році тбіліський студент Лаша Маргішвілі запропонував доведення, що цілочисельний кубоід не існує — однак на 2009 рік робота так і не пройшла перевірку незалежними вченими.

Паралелепіпед Ейлера
Прямокутний паралелепіпед, у якого цілочисельні тільки ребра і лицьові діагоналі, називається ейлеровим.
Найменший з паралелепіпедів Ейлера — (240, 117, 44), з лицьовими діагоналями 267, 244 і 125.
Ще кілька паралелепіпедів Ейлера:
(275, 252, 240),
(693, 480, 140),
(720, 132, 85),
(792, 231, 160).
Ейлер описав два сімейства таких паралелепіпедів (звідси назва). Втім, повного опису всіх паралелепіпедів Ейлера також немає.
Відомі такі вимоги до ейлерового паралелепіпеда (а значить, і до цілочисельної цеглини):
- Одне ребро ділиться на 4, друге ділиться на 16, третє непарне (якщо, звичайно, він примітивний — тобто, НСД (a, b, c) = 1).
- Одне ребро ділиться на 3 і ще одне — на 9.
- Одне ребро ділиться на 5.
- Одне ребро ділиться на 11.
- Одне ребро ділиться на 19.
- Одне ребро або просторова діагональ діляться на 13.
- Одне ребро, лицьова або просторова діагональ діляться на 17.
- Одне ребро, лицьова або просторова діагональ діляться на 29.
- Одне ребро, лицьова або просторова діагональ діляться на 37.
- Добуток ребер, лицьових і просторової діагоналі має ділитися на 2^8·3^4·5^3·7·11·13·17·19·29·37

Це повідомлення відредагував x3mEn: Oct 22 2013, 09:16


--------------------

(Show/Hide)

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Відповідей
molo
Aug 30 2010, 07:06
Пост #2


Трохи обжився
**

Група: Trusted Members
Повідомлень: 23
З нами з: 21-January 09
Користувач №: 906
Стать: Чол



Дякую, x3mEn
Хороша робота!

Тільки ще би маленького мануала для усіх smile.gif

Щодо GPU версії, то звичайно потрібно, але почати можна би було і зі звичайної CPU версії для Windows OS. Потім неодмінно покрити інші.

Клієнтська частина виглядає не дуже складною (простий перебір, щоб 100% перевірити) + комунікація з серверною частиною (відсилка результатів, отримання задачі, оновлення клієнта) - для початку, здається досить.

Я так, розумію, питання щодо серверної частини досі відкрите - чи будемо використовувати Boinc чи інший аналог (точно і не знаю чи щось нове з'явилось).Іншим варіантом є розробка своєї серверної частини (Java або .NET, maybe PHP + database MySQL).

Чим раніше ми би випустили робочу версію (клієнт-сервер + реєстрація користувачів + статистика) тим потенційно більше би людей ми могли б найти для проекту. Бо більшість серйозних людей навіть не звернуть увагу, коли у нас крім балачок нічого ще нема.

Як тільки буде визначено з серверною частиною, то, гадаю, ми могли б шукати бажаючих допомогти і формувати активну частину проекту (внутрішні обговорення, SVN, wiki, TODOs etc.)


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
x3mEn
Aug 30 2010, 10:46
Пост #3


snow catcher
*********

Група: Trusted Members
Повідомлень: 2 213
З нами з: 4-August 07
Користувач №: 563
Стать: Чол
Free-DC_CPID



(molo @ Aug 30 2010, 08:06) *

Дякую, x3mEn
Хороша робота!

Тільки ще би маленького мануала для усіх smile.gif


Мануал до тестової програми?

Ну, по-перше перебір ведеться серед діагоналей, що утворюються різними комбінаціями добутків простих чисел виду 4k+1 у різних ступенях.
У віконці Current position можна побачити поточну позицію перебору. У таблиці - фактори і їх ступені, в полі Diagonal - відповідне значення діагоналі.
Squares - кількість різних розкладань числа Diagonal на суму двох квадратів.
До речі, перевірити розкладання можна, якщо поставити галочку Save squares to .txt files, тоді в директорії, звідки зпускалась програма, будуть створюватись файли з назвою = значенню Diagonal, а всередині через кому будуть перелічені всі пари розкладів.
Кількість розкладів можна розрахувати за відомою формулою.
Власне, я дуже втішаюсь, що кількість розкладів, що я отримую за алгоритмом, збігається із значенням за формулою.
Наприклад:
5**7
13**1
17**2
29**2
37**2
41**1
53**1
Тобто діагональ = 734328519856953125
Кількість розкладів: [((2*7+1)(2*1+1)(2*2+1)(2*2+1)(2*2+1)(2*1+1)(2*1+1)+1)/2] = [(15*3*5*5*5*3*3+1)/2] = 25313

Для кожної діагоналі на основі її розкладу на суму квадратів відбувається пошук усіх інших 6 вимірів (3 ребра, 3 лицьові діагоналі).
Розділ Last Checked Candidate власне створений для того, щоб візулізувати пошук.
Для кожної діагоналі кількість переборів має порядок Q^2, де Q - кількість розкладів.
У найгіршому випадку = (Q^2)/2, у найкращому - 0. smile.gif
Власне, це найкращий порядок, якого я досяг. За рахунок певних оптимізацій, таких як, наприклад:
- попередня перевірка, що 2 ребра не можуть бути одночасно непарними числами,
- для обраної лицьової діагоналі F перебір одного з ребер тільки до значення sqrt(F) і таке інше
кількість переборів ще скорочується, може десь в 2-3 рази.

Settings: встановлення початкової і кінцевої позицій перебору.
Manual - вручну, інакше - з файлу.
Метод вручну обмежується встановленням одного значення фактору і його ступеню.
Через файл початкову і кінцеву позицію можна встановити точніше.
У будь-якому випадку під час обрахунку у файлі зберігається остання позиція.
Власне, за змовченням встановлено метод "Через файл", разом з exe я додав task64.txt з останною позицією, до якої я дорахував на той момент.
Якщо обрати метод Manual, тоді файл буде створено самостійно, пізніше за великого бажання можна самостійно змінити початкові і кінцеві позиції через будь-який текстовий редактор.
Параметр "кінцева позиція" є необов'язковим, якщо спочатку не вказано, перебір буде тривати, поки не перебере все до кінця. smile.gif
Refresh Frequence (sec) я створив для того випадку, якщо перебір відбувається вже надто швидко і візуалізація гальмує сам перебір.
Це було корисно, наприклад, коли я створив версію програми, що відтворює пошук лише серед 32 бітних цілих. Тоді перебір відбувається аж надто швидко.
Якщо цікаво, можу скомпілювати 32 бітну версію і викласти сюди. В мене є враження, що 32-бітний перебір взагалі можна зробити силами однієї машини.
В мене, правда, є певні сумніви щодо швидкості пошуку простих чисел у високих діапазонах чисел, можливо це свого часу стане серйозним гальмом.
Але, принаймні за пігодинки в 32-бітній версії я перебрав всі варіанти факторів аж десь до 70000. Для 32 біт переломним є число 46000, після чого кількість варіантів розкладів тільки падає.
А основне гальмо в цьому переборі це не абсолютне значення діагоналі, а кількість розкладів цього числа на суми квадратів.

В розділі Statistics показується загальна статистика процесу від початку запуску.
Найцікавішими є такі значення:
Diagonals checked - кількість перебраних діагоналей
Avg Time per G (sec) - середня тривалість перевірки однієї діагоналі
Avg Squares per G - середня кількість розкладів діагоналі на суму двох квадратів


--------------------

(Show/Hide)

User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Повідомлення у даній Темі
x3mEn   Perfect Cuboid   Aug 6 2010, 00:01
Rilian   я эту задачу уже рассматривал, не зря тестовый бои...   Aug 6 2010, 00:47
x3mEn   Є одна дуже цікава задача мого дитинства - задача ...   Aug 6 2010, 01:16
x3mEn   Ситуація така: я задачу не залишив, за останній мі...   Aug 28 2010, 19:44
molo   Дякую, x3mEn Хороша робота! Тільки ще би мале...   Aug 30 2010, 07:06
x3mEn   Дякую, x3mEn Хороша робота! Тільки ще би мал...   Aug 30 2010, 10:46
x3mEn   Нова версія тестової програми. Зміни: + Нова стат...   Sep 1 2010, 11:47
molo   Привіт Усім! Дякуючи хорошим ідеям про ‘наш ...   Jan 28 2011, 08:06
re_SET   molo, Насколько сложная задача в плане выч. мощнос...   Jan 28 2011, 10:02
molo   [b]molo, Насколько сложная задача в плане выч. мо...   Jan 28 2011, 11:41
x3mEn   [quote name='re_SET' post='72969' date='Jan 28 20...   Jan 28 2011, 19:31
molo   Хто візьметься зробити хоча б пункт #1, порахув...   Jan 28 2011, 20:48
Rilian   molo, мне кажется я видел в интернете инфу что как...   Jan 28 2011, 12:43
molo   molo, мне кажется я видел в интернете инфу что ка...   Jan 28 2011, 19:22
x3mEn   Саме так і працює моя програма. Поясню на прикладі...   Jan 28 2011, 22:35
Death   список простых чисел примерно до миллиарда давно и...   Jan 28 2011, 22:59
x3mEn   roughly 2х10^21 below 10^23 (2^64)/(5^2) = ~ 7.3...   Jan 28 2011, 23:17
x3mEn   Я сподіваюсь, що після усього мною сказаного зрозу...   Jan 28 2011, 23:02
x3mEn   До речі, простих чисел менших за 2^32 якщо теж бли...   Jan 28 2011, 23:36
Death   не, там дальше их количество уменьшается. пи(х) не...   Jan 29 2011, 00:00
7 Сторінки V  1 2 3 > » 


Reply to this topicStart new topic
4 Користувачів переглядають дану тему (4 Гостей і 0 Прихованих Користувачів)
0 Користувачів:

 



- Lo-Fi Версія Поточний час: 28th April 2024 - 23:53

Invision Power Board v1.3.3 © 1996 IPS, Inc.