Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/40: Рейтинг темы: голосов - 40, средняя оценка - 5.00
0 / 0 / 2
Регистрация: 10.09.2015
Сообщений: 8

Линейный рекуррентный регистр сдвига с обратной связью, реализация на python

19.05.2016, 15:48. Показов 8037. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток.
Помогите довести задание по информатике до ума!


Определить для рекуррентного регистра сдвига из 4 ячеек все векторы обратных связей, которые дадут на
выходе ПСП максимальной длины


Далее привожу свою попытку реализовать работу ЛРР с обратной связью:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def regt(reg1):
       def xor(s0, s3):
              s0 = int(s0)
              s3 = int(s3)
              new_s0=s0^s3
              return str(new_s0)
       reg_new=''
       while reg!=reg_new:
              print(reg1)
              reg_new = xor(reg1[3], reg1[0]) + reg1[:-1]
              reg1=reg_new
              
       return reg_new
 
 
reg='1111'
 
print(regt(reg))
Эта функция прогоняет все возможные состояния регистра по кругу.

Подскажите, правильно ли я понял, что такое ЛРР, правильно ли его реализовал
и может кто-то доступно объяснить чайнику, что такое последовательность максимальной длины?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.05.2016, 15:48
Ответы с готовыми решениями:

Линейный регистр сдвига с обратной связью
Ребят срочно нужна помощь с решением задачки. Задача такова:Используя матричную запись вычислить период импульсной функции линейного...

Линейный рекуррентный регистр сдвига
Помогите написать программу линейного рекуррентного регистра сдвига на С++ К примеру у нас есть полином x4+x3+x+1 задается произвольное...

Регистр сдвига с линейной обратной связью
Собственно вопрос, как реализовать LFSR на Си???

2
0 / 0 / 2
Регистрация: 10.09.2015
Сообщений: 8
10.06.2016, 07:32  [ТС]
Что-ж, внятной помощи где-либо я не получил, так что пришлось самому вникать в курсовую

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class список: # пока читал про регистры, заодно и ООП освоил:)
     def __init__(self, base):
          self.base = base
     def __add__(self, a):
          self.base = self.base + a
     def __str__(self):
          return "%s " % self.base
 
M = список([])
 
def reg_t(fback, reg): 
#эта функция вызывается из функции max_len(), 
#Вообще она изначально должна была брать 2 последовательных состояния регистра 
#и давать следующее, ну и вот во что превратилась
    count1 = 0
    for j in range(len(fback)):
        if reg[j] == fback[j] == '1':
            count1+=1 
    reg2 = str(count1%2)+reg[:-1]
    return(reg2)
 
def max_len(fback): 
#принимает вектор обратной связи
#если с него получается последовательность 2^n-1(максимальной длины)
# то возвращает True
    t=2**len(fback)-1 #период последовательности макс. длины
    reg_all = ['1'*len(fback)] #тут просто начальное заполнение
    while True: 
#запускаем цикл с постусловием
        reg_all += [reg_t(fback, reg_all [-1])]
#крутим нашу шарманку до момента повтора
        if reg_t(fback, reg_all[-1]) in reg_all:
            break
    return len(reg_all) == t #если число состояний 2^n-1, значит последовательность максимальной длины
    #тогда вернет True
 
def LFSR(reg, fback):#имитируем работу регистра, функция принимает начальное заполнение
# и то, какие ячеки регистра падают в сумматор
    next_r, xor = reg, 0
    while True:
        for i in fback:
            xor += int(next_r[i-1])
        if xor%2 == 0:
            xor = 0
        else:
            xor = 1
        next_r = str(xor) + next_r[:-1]
        xor = 0
        print(next_r)
        if max_len(next_r) == True:
            M+[next_r]#собственно вот для этой красоты понадобилась перезагрузка;)
        if next_r == reg:
            break
 
 
LFSR('11111', (5, 1)) #заполняем регистр, указываем обратные связи
print(M)#вроде как ответ
Добавлено через 9 часов 36 минут
Цитата Сообщение от Darkwing4 Посмотреть сообщение
LFSR('11111', (5, 1)) #заполняем регистр, указываем обратные связи
упс, со второй надо брать по последнюю, иначе не все состояния прокрутит
Python
1
LFSR('11111', (5,2))
0
0 / 0 / 2
Регистрация: 10.09.2015
Сообщений: 8
11.06.2016, 13:56  [ТС]
Итоговая версия программы:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def reg_t(fback, reg): 
    count1 = 0
    for j in range(len(fback)):
        if reg[j] == fback[j] == '1':
            count1+=1 
    reg2 = str(count1%2)+reg[:-1]
    return(reg2)
 
def max_len(fback): 
    t=2**len(fback)-1 
    reg_all = ['1'*len(fback)] 
    while True:
        if reg_t(fback, reg_all[-1]) in reg_all:
            break
        reg_all += [reg_t(fback, reg_all [-1])]
 
    return len(reg_all) == t
 
n=8
t=2**n-1
 
for i in range(1, t):
   if max_len(bin(i)[2:].zfill(n)):
        print((bin(i)[2:].zfill(n)))
На выходе даст список всех возможных векторов обратной связи, на вход нужно только указать число ячеек рекгистра
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.06.2016, 13:56
Помогаю со студенческими работами здесь

Регистр сдвига c линейной обратной связью
Есть код -шифрование с помощью регистра сдвига c линейной обратной связью , который считывает правильно ,правильно выводит в консоль и...

Четырехразрядный регистр сдвига с обратной связью
Покажите что М последовательность 111100010011010 генерируется четырехразрядным регистром сдвига с обратной связью QO = Q3 ⊕ Q4. Определите...

Регистр сдвига с линейной обратной связью
И так пишу значит регистр сдвига. Уже значения генерируются успешно. Вот только генерация идет без конца. using System; namespace...

Регистр сдвига с линейной обратной связью
Здравствуйте, нужна помощь в решении регистра сдвига с линейной обратной связью у меня многочлен 2157 Перевел его в двочиное 010 001...

Реализовать регистр сдвига с линейной обратной связью
Помогите с задачкой, нужно реализовать регистр сдвига с линейной обратной связью. Это задачка из него. Спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru