2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3, 4, 5  След.
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 17:01 
Soul Friend в сообщении #1426115 писал(а):
Ну напишите, пожалуйста, весь код с выборкой rule[] , чтобы уже поставить на этом всём жирную точку.
Уже писал, дважды:
post1425948.html#p1425948
post1425979.html#p1425979
Ну и для вычисления столбца L матрицы N и L не нужны, достаточно 9-ти (или даже 5-ти) столбцов M.

wrest в сообщении #1426125 писал(а):
Ну вот как раз там и видно. Посмотрите формулу что я сделал:
А можно не по Вашей формуле, а по его исходнику с if-ами? Т.е. в логике я не особо сомневаюсь, но вот по его куче if-ов этого не видно же, там ведь N[i-1,j] теоретически может принимать любые значения и if не сработать ... Вдруг Вы не так поняли что он хотел от третьей матрицы и формулу сделали немного не ту ... Хотя если результат совпадает для всех исходных вариантов, то конечно правильно, но интересно как это поняли, прямо из кучи if-ов или сначала восстановили его логику (как я про остальное).

 
 
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 17:16 
Dmitriy40 в сообщении #1426128 писал(а):
А можно не по Вашей формуле, а по его исходнику с if-ами?

Ну я так и делал. Выписал что во что превращается, получилось
000 0
001 1
012 2
013 3
124 4
125 5
136 6
137 7
...
640 24 (6*4+0)
641 25 (6*4+1)
652 26 (6*4+2)
653 27 (6*4+3)
764 28 (6*4+4) тут вместо семерки берем 6-ку, т.е. из нечетных вычитаем единицу
765 29 (6*4+5)
776 30 (6*4+6)
777 31 (6*4+7

видно что средняя цифра -- не нужна.
Dmitriy40 в сообщении #1426128 писал(а):
теоретически может принимать любые значения и if не сработать ...
Да, но тогда никакое значение не присвоится обрабатываемой клетке, а случай когда никакой if не сработало, ТС-ом не предусмотрен. :mrgreen: Я, есличо, тоже жду от ТС-а пояснений, всё ещё.
Dmitriy40 в сообщении #1426128 писал(а):
Вдруг Вы не так поняли что он хотел от третьей матрицы и формулу сделали немного не ту ... Хотя если результат совпадает для всех исходных вариантов, то конечно правильно
Да, результат выходит точно тот же, что дают if-ы :mrgreen:
Dmitriy40 в сообщении #1426128 писал(а):
прямо из кучи if-ов или сначала восстановили его логику (как я про остальное).
Да, прямо оттуда. :facepalm:

 
 
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 17:25 
Аватара пользователя
Предложенные последовательности удаляют из за отсутствия общего интереса, ну да ладно.
upd. неужели подобная генерация псевдослучайных чисел так уж и не представляет общего интереса?
И вообще в исследовании клеточных автоматов?

 
 
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 17:26 
Soul Friend в сообщении #1426115 писал(а):
Ну напишите, пожалуйста, весь код с выборкой rule[] , чтобы уже поставить на этом всём жирную точку.
Мы (говорю и за Dmitry40) не уверены, что ваша программа вычисляет то, что вы хотите чтобы она вычисляла. А вы никак не сформулируете что именно вы вычисляете. Вычисления эти -- три строчки кода (ну, может, пять), но пока трудно понять что вам на самом деле надо.

 
 
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 17:53 
Аватара пользователя
Есть клетка А с некоторым состоянием, ноль или единица, её состояние определяет правило 30, то есть состояние трёх клеток сверху. Вот состояние этих трёх клеток перевожу в десятичное число и записываю в исходную, нижнюю клетку А, получается матрица N.
Потом беру одну клетку В из этой матрицы N и смотрю на три клетки которые над ней, так как эти три клетки образуются из пяти клеток сверху, то максимум $2^5$ разных состояния трех клеток получаются, все эти $2^5$ вариантов упорядочиваю по возрастанию отмечая их от нуля до тридцати одного, смотрю каким значениям соответствуют три клетки над В, и записываю их в В, получается матрица L.

-- 15.11.2019, 21:03 --

wrest в сообщении #1426131 писал(а):
Dmitriy40 в сообщении #1426128

писал(а):
теоретически может принимать любые значения и if не сработать ... Да, но тогда никакое значение не присвоится обрабатываемой клетке, а случай когда никакой if не сработало, ТС-ом не предусмотрен. :mrgreen: Я, есличо, тоже жду от ТС-а пояснений, всё ещё.

Про какие случаи Вы говорите, можно на примерах ?
Там ведь все случаи расписаны.

 
 
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 18:28 
Soul Friend в сообщении #1426138 писал(а):
Потом беру одну клетку В из этой матрицы N и смотрю на три клетки которые над ней,

На самом деле, вы смотрите не на три, а на две клетки, т.к. средняя клетка (непосредственно над обрабатываемой) в вычислениях по сути не участвует. Если скажем, левая клетка равна 4 а правая равна 2, то средняя может быть только 1, и тройка 412 у вас соответствует числу 18:
if(N[i-1,j-1]==4&&N[i-1,j]==1&&N[i-1,j+1]==2, L[i,j]=18);
То есть из троек 402 412 422 432 442 452 462 472 возможна только одна: 412. При любом другом значении средней клетки, у вас произойдёт незаметный сбой в программе, и значение в матрице L будет ошибочным (в случае PARI/GP -- нулём, а так может произвольным оказаться). Поэтому проверять надо первую цифру (4) и последнюю (2), а среднюю можно не проверять, и вот эта часть &&N[i-1,j]==1 у вас в коде лишняя.
Поэтому средняя клетка в вычислениях может не участвовать. Это вам понятно? Это то что вы хотели?

 
 
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 18:46 
wrest
Биг сорри. Я тормоз. Забыл что у него клетки перекрываются (ужас-ужас :facepalm:) и потому для xABCx по A и C однозначно восстанавливается B. Сорри за напряг, торможу (из-за кривизны десятичного представления у ТС).

Soul Friend в сообщении #1426132 писал(а):
неужели подобная генерация псевдослучайных чисел так уж и не представляет общего интереса?
ИМХО да, не представляет. Слишком сложно считается, зависимость неизвестна, хоть тесты и проходит, но гарантий нет. Зато есть много более простых и быстрых и надёжно исследованных генераторов. Потому и не интересно.
Про математическую сторону центрального столбца номера комбинации в десятичной форме сказать ничего не могу. Но не вижу никакого математического смысла в этом, т.е. нумерология. Но могу и чего-то не понимать.

-- 15.11.2019, 18:50 --

Soul Friend
Может быть вам было бы полезно вывести формулу для L[i] прямо от M[], без всяких промежуточных операций. Это по идее просто арифметика средней школы, даже не алгебра. Будет видно от чего она и как зависит. А уж как считать саму M[] - написано и нами тут, и в самой OEIS полно примеров программ вычисления автомата.

 
 
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 18:55 
Аватара пользователя
wrest в сообщении #1426143 писал(а):
То есть из троек 402 412 422 432 442 452 462 472 возможна только одна: 412. При любом другом значении чредней клетки, у вас произойдёт незаметный сбой в программе, и значение в матрице L будет ошибочным (в случае PARI/GP -- нулём, а так может произвольным оказаться).

Возможны только 400, 401, 412, 413. Все они строго расписаны, откуда вы взяли 442, 452 и.т.д. ?
Я понимаю о чём вы, но вычисления будут те же, никаких ошибок, просто у вас код короче будет.
wrest в сообщении #1426131 писал(а):
640 24 (6*4+0)
641 25 (6*4+1)
652 26 (6*4+2)
653 27 (6*4+3)
764 28 (6*4+4) тут вместо семерки берем 6-ку, т.е. из нечетных вычитаем единицу
765 29 (6*4+5)
776 30 (6*4+6)
777 31 (6*4+7
видно что средняя цифра -- не нужна.

Вот это хорошее наблюдение.
Тему можно закрывать.

 
 
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 19:15 
По моему для конкретно правила 30 код сворачивается в один цикл вычисления следующего состояния автомата (одна строка из трёх операций, есть в примерах в OEIS, спасибо wrest за подсказку) и преобразования центральных (пяти?) бит в число центрального столбца L. Т.е. на получение одной итерации надо грубо говоря всего две несложных формулы. Без всяких if. И все коды выше в теме выкинуть. ;-)
Проверил скорость, без преобразования M в L одна только M миллион итераций вычисляется на PARI за 52с. Сто тысяч итераций за 1.7с. С вычислением столбца L (спасибо wrest за формулу) время растёт до 72с и 2.1с соответственно.

ИМХО, если бы в центральных битах была бы периодичность (или вообще закономерность), её бы давно заметили. Математическими преобразованиями периодичность не появится, закономерность - не знаю, смотрите конечно. Только смотреть придётся миллионы итераций, более короткие уже бы заметили (тоже сугубо ИМХО).

 
 
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 19:48 
Аватара пользователя
Soul Friend в сообщении #1426132 писал(а):
неужели подобная генерация псевдослучайных чисел так уж и не представляет общего интереса?

Каковы затраты на вычисление 100 случайных значений после первого миллиарда (и это мало)?...

 
 
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 20:00 
Аватара пользователя
Geen
Это риторический вопрос, или мне электроэнергию посчитать?
Dmitriy40 в сообщении #1426146 писал(а):
ИМХО да, не представляет. Слишком сложно считается, зависимость неизвестна, хоть тесты и проходит, но гарантий нет. Зато есть много более простых и быстрых и надёжно исследованных генераторов. Потому и не интересно.

Удовлетворительно.

 
 
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 20:27 
Dmitriy40 в сообщении #1426150 писал(а):
По моему для конкретно правила 30 код сворачивается в один цикл вычисления следующего состояния автомата (одна строка из трёх операций, есть в примерах в OEIS, спасибо wrest за подсказку) и преобразования центральных (пяти?) бит в число центрального столбца L.

Да, надо теперь заставить ТС-а всё это вывести :mrgreen: и сократить программу до одной строки.

 
 
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 20:40 
Аватара пользователя
Soul Friend в сообщении #1426159 писал(а):
Это риторический вопрос, или мне электроэнергию посчитать?

Нет, это очень практический вопрос. А считают память и время. И очень жаль, что Вы это не знаете...

 
 
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 20:47 
Geen в сообщении #1426157 писал(а):
Soul Friend в сообщении #1426132 писал(а):
неужели подобная генерация псевдослучайных чисел так уж и не представляет общего интереса?
Каковы затраты на вычисление 100 случайных значений после первого миллиарда (и это мало)?...
По моему ограничиваются скоростью памяти, миллиард итераций потребует два миллиарда битов для хранения состояния, это 250МБ. Если делать тупо (с расчётом что эти 100 чисел не последние и понадобятся ещё следующие), то надо прочитать и записать обратно 25ГБ данных (100 итераций), это примерно пара секунд, вычисления займут на порядки меньше времени.
Если известно что запрошено будет не более скажем миллиона чисел, то не надо пересчитывать все 250МБ, можно ограничиться лишь центральными 250КБ (2 миллиона битов), это влезет в L2 кэш процессора (а он работает на частоте процессора) и скорость выдачи чисел будет определяться скоростью вычислений. Вычисление одной итерации требует одного чтения памяти, одной записи памяти, двух сдвигов, двух логических операций - итого в потоке в среднем по такту (все указанные операции могут выполниться параллельно) на каждое слово процессора. 250КБ это 8К слов x86, ну вот можете считать что 10000 циклов процессора хватит на одну итерацию. И миллиона циклов на все 100 Ваших чисел. Порядка 0.3мс (для 3ГГц процессора) на всё. На AVX можно и ускорить до двух тактов (сдвиги не параллелятся) на слово 256 битов, или примерно вчетверо. На AVX512 вероятно ещё вдвое-вчетверо (там регистры шире и есть удобные команды). Что будет после компилятора С - увольте, диапазон значений от нескольких (один-два вряд ли получатся, скорее ближе к десятку) тактов на слово до сотен тактов, оптимизаторы ещё не настолько хороши, имхо.

-- 15.11.2019, 20:49 --

wrest
Заметьте, тема в разделе математики, а не помощи с программой, там бы может и выдали прям совсем готовую. Потому мои сообщения на 70% офтоп. :-(

 
 
 
 Re: Четыре оттенка нуля или 5-ти битное кодирование в ЭКА
Сообщение15.11.2019, 21:05 
Dmitriy40 в сообщении #1426146 писал(а):
Про математическую сторону центрального столбца номера комбинации в десятичной форме сказать ничего не могу. Но не вижу никакого математического смысла в этом, т.е. нумерология. Но могу и чего-то не понимать.
Тут можно сказать вот что: пусть есть исходный клеточный автомат А и результат подобной «агрегации $m$ соседей» Б (здесь $m = 3$); притом я не буду говорить ни о каких системах счисления: если в клетках автомата А элементы $S$, в клетках Б элементы $S^m$ и всё.

Тогда если например правило А требует знать много соседей со всех сторон клетки чтобы посчитать её новое значение, при правильном выборе агрегации для Б мы можем получить правило, требующее только непосредственных соседей и не более. Но во-первых в данном случае толку в этом нет, потому что и так требуются лишь непосредственные, и во-вторых правило для Б будет всегда как минимум на первый взгляд сложнее для анализа (это функция с бо́льшими областями определения и значений). Может быть слааабенькая надежда на то, что некоторые рассуждения для правила Б будут проще, и тогда если мы установим, что центральный столбец Б предельно периодичен, то же автоматически последует для А (если мы назвали центральным столбцом Б правильный). Всё же вердикт действительно такой, что a priori никакой пользы не видно.

 
 
 [ Сообщений: 63 ]  На страницу Пред.  1, 2, 3, 4, 5  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group