Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Алгоритмы и теория программирования


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

CradleA
Статус: Профессионал
Рейтинг: 108
∙ повысить рейтинг »
Evgen aka Chuma
Статус: 4-й класс
Рейтинг: 49
∙ повысить рейтинг »
Роман Селиверстов
Статус: Советник
Рейтинг: 0
∙ повысить рейтинг »

∙ Алгоритмы и теория программирования

Номер выпуска:202
Дата выхода:03.03.2017, 19:45
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:22 / 7
Вопросов / ответов:3 / 5

Консультация # 165263: Здравствуйте, уважаемые эксперты! Нужно написать алгоритм для Машины с Неограниченными Регистрами (МНР). Аналог на Pascal' в приложении. Т.е. нужно решить систему уравнений. ...
Консультация # 150720: Здраствуйте уважаемые эксперты! У меня у вам вопрос - какой использовать алгоритм для решения следующей задачи: На окружности расположены 6 точек, равностоящих друг от друга. Точки пронумерованы по часовой стрелке начиная с верхней позиции. Движение из одной точки в другую происходит следующим образом: из данной точки он перемещается в одну и...
Консультация # 134499: Уважаемые эксперты! Помогите пожалуйста составить алгоритм записи 5 байт в массив памяти 512 байт (), так чтобы записывались по циклу разные участки памяти (это нужно для продления ресурса памяти, т. к. число перезаписей ограничено) Наверное нужно писать еще 6й байт - адрес текущего блока или какую-то комбинацию, так чтобы при считывании массив...

Консультация # 165263:

Здравствуйте, уважаемые эксперты! Нужно написать алгоритм для Машины с Неограниченными Регистрами (МНР). Аналог на Pascal' в приложении. Т.е. нужно решить систему уравнений.

Дата отправки: 18.04.2009, 10:00
Вопрос задал: Toxa
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Бизин Михаил Анатольевич:

Здравствуйте, Toxa!
У Машины с Неограниченными Регистрами всего 4 команды:
1. Z(n) - Обнулить регистр Rn (Pascal: R[n]:=0;)
2. S(n) - Увеличить регистр Rn на 1 (Pascal: inc(R[n]);)
3. T(m,n) - Присвоить регистру Rn значение регистра Rm (Pascal: R[n]:=R[m];)
4. J(m,n,q) - Условный переход. Если Rm=Rn, то перейти к q-й команде (Pascal: if R[m]=R[n] then goto q;)

Так будет выглядеть программа:
Начальное состояние: R2=X, R3=Y
Конечное состояние: R5=F
1 Z(0)
2 Z(1)
3 Z(2)
4 J(2,4,8)
5 J(2,3,16)
6 S(2)
7 J(0,1,4)
8 T(3,5)
9 Z(2)
10 J(2,3,14)
11 S(2)
12 S(5)
13 J(0,1,10)
14 S(5)
15 J(0,1,25)
16 T(4,5)
17 Z(2)
18 J(2,3,21)
19 S(2)
20 J(0,1,18)
21 J(2,4,25)
22 S(2)
23 S(5)
24 J(0,1,21)

В приложении программа на Паскале, где одна строка - одна комманда машины

Приложение:

Консультировал: Бизин Михаил Анатольевич
Дата отправки: 18.04.2009, 23:05
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 150720:

Здраствуйте уважаемые эксперты!
У меня у вам вопрос - какой использовать алгоритм для решения следующей задачи:
На окружности расположены 6 точек, равностоящих друг от друга. Точки пронумерованы по часовой стрелке начиная с верхней позиции. Движение из одной точки в другую происходит следующим образом: из данной точки он перемещается в одну из ближайщих соседних точек с вероятностью 1/4 или в противоположную точку с вероятностью 1/2. Нужно найти вероятность остановки процесса в точке 4 после 25 щагов.
Вообщем у меня проблемы с расчетом вероятности поэтому сам додуматься немагу сколько непытался, надеюсь тут ктонибудь поможет smile

Дата отправки: 16.11.2008, 18:05
Вопрос задал: Сидоров Евгений Романович
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Errandir:

Здравствуйте, Евгений Романович!

Ниже я написал код с комментариями для более обобщённого случая на matlab'е.
С заданными ниже условиями, код считает для вашего случая, если конечно движение начиналось из первой позиции.

Удачи.

Приложение:

Консультировал: Errandir
Дата отправки: 16.11.2008, 21:01
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Andersen:

Здравствуйте, Сидоров Евгений Романович!

1 способ : полный перебор 847288609443 различных кобинаций (долго и глупо)

2 способ : Данная задача легко и наглядно решается в excel

1 2 3 4 5 6
Исходное знач. 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000 0,00000000
Шаг 1 0,25000000 0,50000000 0,00000000 0,00000000 0,00000000 0,25000000
Шаг 2 0,31250000 0,25000000 0,25000000 0,00000000 0,06250000 0,12500000
Шаг 3 0,20312500 0,28125000 0,18750000 0,14062500 0,04687500 0,14062500
Шаг 4 0,19140625 0,21875000 0,22265625 0,14062500 0,11718750 0,10937500
Шаг 5 0,15722656 0,20605469 0,20019531 0,17578125 0,12695313 0,13378906
Шаг 6 0,15771484 0,18017578 0,19702148 0,17578125 0,15307617 0,13623047
Шаг 7 0,15258789 0,17315674 0,18328857 0,18072510 0,16021729 0,15002441
Шаг 8 0,15644836 0,16540527 0,17758179 0,17687988 0,16792297 0,15576172
Шаг 9 0,15834427 0,16397095 0,17131805 0,17499161 0,16936111 0,16201401
Шаг 10 0,16158581 0,16299438 0,16856289 0,17174721 0,17033958 0,16477013
Шаг 11 0,16353011 0,16368222 0,16657472 0,16980314 0,16965103 0,16675878
Шаг 12 0,16518247 0,16432929 0,16593558 0,16815090 0,16900402 0,16739774
Шаг 13 0,16607681 0,16515745 0,16568626 0,16725652 0,16817589 0,16764706
Шаг 14 0,16663210 0,16574933 0,16581442 0,16670123 0,16758400 0,16751891
Шаг 15 0,16685481 0,16620699 0,16600358 0,16647852 0,16712635 0,16732975
Шаг 16 0,16693033 0,16648005 0,16622402 0,16640301 0,16685328 0,16710931
Шаг 17 0,16690725 0,16664118 0,16639678 0,16642608 0,16669215 0,16693655
Шаг 18 0,16685538 0,16671312 0,16652631 0,16647795 0,16662022 0,16680703
Шаг 19 0,16679564 0,16673755 0,16660762 0,16653769 0,16659579 0,16672571
Шаг 20 0,16674615 0,16673411 0,16665510 0,16658718 0,16659922 0,16667823
Шаг 21 0,16670918 0,16672038 0,16667763 0,16662415 0,16661295 0,16665571
Ша г 22 0,16668524 0,16670409 0,16668563 0,16664809 0,16662924 0,16664770
Шаг 23 0,16667118 0,16669005 0,16668548 0,16666215 0,16664328 0,16664786
Шаг 24 0,16666424 0,16667947 0,16668193 0,16666910 0,16665386 0,16665140
Шаг 25 0,16666163 0,16667247 0,16667749 0,16667171 0,16666086 0,16665584

Искомое значение 0,16667171

расчет каждой ячейки следующего шага основан на суммировании вероятностей

точка2.шаг2=точка1.шаг1*0,5+точка2.шаг1*0,25+точка3.шаг1*0,25

Консультировал: Andersen
Дата отправки: 17.11.2008, 10:32
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 134499:

Уважаемые эксперты!
Помогите пожалуйста составить алгоритм записи 5 байт в массив памяти 512 байт (), так чтобы записывались по циклу разные участки памяти (это нужно для продления ресурса памяти, т. к. число перезаписей ограничено) Наверное нужно писать еще 6й байт - адрес текущего блока или какую-то комбинацию, так чтобы при считывании массива точно определить какие 5 байт были записаны последними. Заранее спасибо.

Дата отправки: 28.04.2008, 12:25
Вопрос задал: Ляудинскайте Юлианна
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Гнедов Андрей:

Здравствуйте, Ляудинскайте Юлианна!
Насколько я понял, Вы пишете 5 байтов в микросхему, которая имеет ограничения по числу циклов стирание/запись, но практически не имеет ограничений на чтение.
Если Вам нужно хранить всего 5 байтов, а у Вас их 512, нужно всю память разделить на блоки, напрмер по 8 байт - 3 байта на номер записи и 5 байт на содержимое. Всего 64 блока, номера 0-63. Смещение блока - номер*8.

При инициализации: вся память записывается нулевыми данными с нужными номерами. Запись производится последовательно, сначала в 0-й - номер 0, потом в 1-й - номер 1, и т.д. После 63-го - опять в 0-й.

При записи ищется последовательная пара номеров, чтобы следующий был меньше предыдущего на 64 ( с учетом кольца, что после 63-его - снова 0-й, а после номера 0xFFFFFF - 0x000000). Тогда второй в этой паре - самый старый, его переписываем.

При чтении: ищется блок с максимальным номером (с учетом, что после номера 0xFFFFFF идет 0x000000) , он и есть последний.

Можно ускорить работу, если при поиске максимального номера просматривать не все 64 записи, а искать переход делением пополам.

Консультировал: Гнедов Андрей
Дата отправки: 28.04.2008, 18:09
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Errandir:

Здравствуйте, Юлианна!

Я полностью согласен с Андреем, но хочу заметить, что лучше делить на блоки по 6, так как это улучшит коэффициент использования памяти на 20.5%.

Коэффициент использования памяти — отношение памяти использованной для хранения полезной информации на максимальное количество изменений байта по всей памяти ко всей памяти. // если один и тот же участок памяти используется несколько раз, то объём памяти складывается

для 8-и байтового блока: ((64*5)/1)/512=62.5%
для 6-и байтового блока: ((85*5)/1)/512=83.0%

Приложение:

Консультировал: Errandir
Дата отправки: 28.04.2008, 20:40
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное