УДК 631.3.037.37 А.Е. ГОРЯЧЕВ
ПРЕОБРАЗОВАНИЕ ДВОИЧНЫХ И ФАКТОРИАЛЬНЫХ ЧИСЕЛ С ПОМОЩЬЮ СЧЁТНЫХ УСТРОЙСТВ
Рассматривается один из способов преобразования двоичных чисел в факториальные и факториальных чисел в двоичные как промежуточный шаг при генерации либо нумерации перестановок. Данный способ предполагает для осуществления преобразования использование счётных устройств. Разрабатывается структура реализующей данный способ системы, а также исследуются её основные характеристики.
1. Постановка задачи
Преобразование двоичных чисел в факториальные является промежуточным шагом при генерации перестановок на основе факториальных чисел [1]. Перестановки широко используются на практике для решения задач комбинаторной оптимизации, например, задачи поиска оптимального решения [2], а также при помехоустойчивой передаче данных и защите их от несанкционированного доступа. Задача обратного преобразования актуальна при необходимости нумерации перестановок и восстановления исходных данных после передачи [1, 3].
Перестановки на основе факториальных чисел получаются в соответствии со следующим алгоритмом, рассмотренным в [1].
Цифра старшего разряда факториального числа остаётся без изменений и считается первым элементом строящейся перестановки. Следующую цифру сравнивают с первым элементом перестановки; если она больше его, то необходимо увеличить данную цифру на 1, в противном случае она без изменений записывается как второй элемент перестановки. Цифры следующих разрядов сравнивают сначала с наименьшим элементом строящейся перестановки. Если значение цифры при этом больше значения данного элемента, то необходимо увеличить её на 1 и сравнивать с наименьшим из оставшихся элементов перестановки, и если значение цифры больше его, то она увеличивается на 1. Сравнение производится до тех пор, пока значение цифры не станет меньше того значения элемента строящейся перестановки, с которым данная цифра сравнивается, или же пока не будет произведено сравнение со всеми элементами. Таким образом, получается очередной элемент перестановки.
Для обратного перехода от перестановки к факториальному числу необходимо каждый элемент перестановки уменьшить на число единиц, равное количеству предыдущих элементов перестановки, меньших данного элемента. В результате каждый элемент перестановки преобразуется в цифру факториального числа.
Как следует из приведенного выше алгоритма, для получения перестановок требуются факториальные числа, которые, в свою очередь, получают путём преобразования степенных чисел.
Под факториальной системой счисления понимается выражение вида:
где 1 = 0, 1, ... , 0<< 1.
Факториальная система счисления относится к системам счисления со смешанным основанием. Максимальное число Бшах в факториальной системе имеет вид: п(п-1) .1.210. Тогда
Р<ф> = Хп • п!+Хп-1 • (п - 1)!+..Х • И+... + Х1 • 1!+Х0 • 0!,
(1)
(2)
Р=Бшах + 1.
(3)
Для решения задачи преобразования двоичных чисел в факториальные используется алгоритм, разработанный в [1]. Однако этот алгоритм имеет недостаток - сложность его технической реализации. Поэтому в данной работе ставятся следующие задачи:
1) найти простой алгоритм получения факториальных чисел;
2) разработать структуру устройства, реализующего предложенный алгоритм.
2. Решение задачи
Предлагаемый в работе метод преобразования двоичных и факториальных чисел заключается в организации одновременного счёта в направлении убывания чисел, начиная с исходного, и возрастания чисел до числа, которое необходимо получить. Наиболее простым и эффективным способом реализации этого алгоритма является использование суммирующего и вычитающего счётчиков.
При преобразовании двоичного числа в факториальное на вычитающий двоичный счётчик подаётся исходная двоичная комбинация. Особенностью суммирующего счётчика является то, что пересчёт ведётся в факториальной системе счисления. Таким образом, одновременно подавая счётный сигнал на оба счётчика, мы увеличиваем на единицу значение числа в факториальном счётчике и уменьшаем в двоичном. Для полного преобразования числа потребуется количество счётных импульсов, равное величине преобразуемого числа. Преимуществом данного метода является простота его реализации, что компенсирует снижение его быстродействия.
Схема, реализующая данный алгоритм, изображена на рис. 1. В её состав входят: блок управления, двоичный вычитающий счётчик, факториальный счётчик. Входные данные представляют собой исходное двоичное число, а также различные управляющие сигналы. С помощью блока управления осуществляется контроль за процессом преобразования. В начале цикла преобразования исходное двоичное число подаётся с блока управления на двоичный вычитающий счётчик. Факториальный счётчик при этом устанавливается в нуль. Тактирующие импульсы, подаваемые одновременно на входы двоичного и фактори-ального счётчиков, уменьшают двоичное число, записанное в двоичном вычитающем счётчике, и увеличивают число в факториальном счётчике. При достижении нулевой комбинации в двоичном вычитающем счётчике формируется сигнал окончания счёта, запрещающий через блок управления подачу тактирующих импульсов до начала следующего цикла. Далее факториальное число, записанное в факториальном счётчике, передаётся на выход устройства.
Рис. 1. Система преобразования двоичных чисел в факториальные
Обратное преобразование осуществляется по схожей схеме, но в этом случае используется двоичный суммирующий счётчик и факториальный вычитающий счётчик (рис. 2). Исходные данные, представляющие собой факториальное число, записываются в факториальный вычитающий счётчик. Разряды двоичного счётчика в исходном состоянии содержат нули. Счётными импульсами уменьшается число в факториальном счётчике и увеличивается в двоичном. Нулевая комбинация в факториальном счётчике свидетельствует об окончании счёта, далее происходит считывание двоичной комбинации с выхода двоичного счётчика.
Рис. 2. Система преобразования факториальных чисел в двоичные При необходимости осуществлять как прямое преобразование двоичных чисел в факто-риальные, так и обратное - факториальных чисел в двоичные может использоваться схема с двумя реверсивными счётчиками (рис. 3). Двоичный и факториальный счётчики в этом случае могут вести пересчёт как в суммирующем режиме, так и в вычитающем. За выбор режима работы схемы и корректную её работу в выбранном режиме отвечает блок управления на основании получаемых входных данных.
входные данные
сигнал
Рис. 3. Система, осуществляющая переход между двоичными и факториальными числами
Структурная схема блока управления рассматриваемой системы представлена на рис. 4. В неё входят: блок считывания входных данных, блок, отвечающий за хранение фактори-альных и двоичных чисел, блок управления направлением счёта, блок вывода данных. Блок считывания входных данных предназначен для приёма и последующей передачи в другие блоки устройства данных о направлении преобразования чисел (двоичные числа преобразуются в факториальные или наоборот), о преобразуемых числах (исходная комбинация двоичного или факториального числа в зависимости от направления счёта), о сигналах синхронизации с передающим и принимающим устройствами. Блок хранения осуществляет приём исходной комбинации от блока считывания и хранение её до начала цикла преобразования. После считывания всех входных данных исходная комбинация передаётся из блока хранения в счётчик, работающий в вычитающем режиме. Блок управления направлением счёта на основе информации, получаемой от блока считывания, устанавливает двоичный и факториальный счётчики в требуемый режим счёта. Блок вывода данных получает сигнал об окончании счёта от счётчика, работающего в вычитающем режиме, после чего обеспечивает вывод выходной комбинации из счётчика, работающего в суммирующем режиме.
Данная схема может использоваться и в системах, осуществляющих только один вид преобразования двоичных и факториальных чисел. Однако в этом случае отпадает необходимость в блоке управления направлением счёта.
Рис. 4. Структура блока управления системы перехода между двоичными и факториальными числами
3. Структура и работа счётчиков
Согласно [4], факториальный счётчик представляет собой последовательность соединённых между собой двоичных счётчиков, коэффициент пересчёта которых возрастает на единицу для каждого последующего счётчика от 1 до К, где N - величина максимального разряда факториального числа. Для построения суммирующего факториального счётчика могут использоваться все методы, описанные в [4]. Отличие вычитающего факториально-го счётчика от суммирующего состоит в инвертировании сигналов между элементами счётчиков разрядов. В данном случае для построения счётчиков разрядов факториального счётчика предпочтительно использовать метод предустановки, так как счётчики разряда при переходе из нулевого состояния в первое необходимо устанавливать в максимальное значение данного разряда факториального числа. При использовании реверсивных счётчиков разрядов, позволяющих вести как прямой, так и обратный счёт, необходимо комбинировать методы управления сбросом счётчика, модификации межразрядных связей счётчика и предустановки.
Пример построения факториального счётчика показан на рис. 5. Сигналы £1, £2, ... обозначают значение цифр разрядов факториального числа, р - сигнал переноса. Нулевой разряд факториального числа всегда принимает значение «0», поэтому не участвует в пересчёте.
П 12 ял
Рис. 5. Структурная схема К-разрядного факториального счётчика
4. Оценка параметров преобразователя
Рассмотрим требования, предъявляемые к счётчикам в зависимости от максимальной разрядности преобразуемого числа.
Для представления к-го разряда факториального числа требуется |"^2(к +1)] двоичных разрядов, следовательно, для к-разрядного факториального числа требуется следующее количество разрядов факториального счётчика:
К ф =Е |82(к + 1)]. (4)
1=1
Величина десятичного числа, соответствующего к-разрядному факториальному числу, будет определяться соответственно формуле (1):
О = Е(Хк • к!), (5)
1=1
где Хк - значение к-го разряда факториального числа.
Отсюда число разрядов двоичного числа (и, соответственно, требуемая разрядность двоичного счётчика) определяется следующим образом:
К д =Г1О82Б1 =
1о§2| № • к!)
1=1
(6)
Пример. Определить разрядность двоичного и факториального счётчиков, требуемую для получения пятиразрядных факториальных чисел.
Решение. Максимальное пятиразрядное факториальное число в десятичной форме записи имеет следующий вид: Б=43210. Для записи данного числа в двоичном виде потребуется следующее количество разрядов (формула (4)):
КФ = | 1О82(4 +1) |+| 1О82(3 +1) |+| 1О82(2 +1) |+| 1О§2(1 +1) |+| 1О82(0 +1) |= 9.
Величина десятичного числа Б, соответствующего числу Б (формула (5)):
Б = 4 • 4!+3 • 3!+2 • 2!+1 • 1!+0 • 0!= 119.
Число разрядов двоичного счётчика (формула (6)) К д = [1082119] = 5.
Время преобразования числа не зависит от способа преобразования (двоичное в факториальное или наоборот), а определяется исключительно количеством счётных импульсов, т.е. величиной числа Б, а также частотой работы системы £
Тр = Б/Г = |(Хк • к!)/Г . (7)
1=1
Рассмотрим данную зависимость при фиксированной частоте работы системы, исследуя только число циклов её работы. Определим максимальное время преобразования в зависимости от разрядности факториального числа. В табл. 1 показаны максимальные значения параметра Б для разрядности факториального числа Чр.
Таблица 1
Чр 2 3 4 5 6 7 8
Б 5 23 119 719 5039 40319 362879
Графически рассматриваемая зависимость показана на рис. 6. Анализируя график зависимости, можно сделать вывод, что при увеличении разрядности факториального числа зависимость приближается к экспоненциальной.
1000000 100000 максимальное время работы устройства (циклов)
10000
1000
100
10 1 количество разрядов факториального числа
2 3 4 5 6 7 8
Рис. 6. Зависимость максимального времени работы системы от разрядности преобразуемого числа
при фиксированной частоте работы системы
Зависимость среднего времени преобразования числа от разрядности факториального числа представлена в табл. 2 и на рис. 7. Данную величину можно оценить, проведя исследование на некотором выбранном интервале, либо воспользовавшись следующей формулой:
Бк Ср = (Бк+1)/2 , (8)
где к - разрядность факториального числа; Бк - максимальное время работы системы для разрядности числа к.
Таблица 2
Чр 2 3 4 5 6 7 8
Dср п 3 12 60 360 2520 20160 181440
Dср т 3 14 57,3 349,5 2551,6 20119,7 181279,7
В табл. 2 Бср т - среднее время преобразования, полученное по формуле (8), Бср п -среднее время преобразования, полученное на основе практического исследования. Совпадение результатов практического исследования и расчётных данных свидетельствует об отсутствии ошибок при определении величины.
1000000 100000 среднее время работы устройства (циклов)
10000
1000
100
10 1 количество разрядов факториального числа
2 3 4 5 6 7 8
Рис. 7. Зависимость среднего времени работы системы от разрядности преобразуемого числа при
фиксированной частоте работы системы
5. Выводы
Для решения поставленной задачи использовался метод, предполагающий применение двух счётчиков: суммирующего факториального и вычитающего двоичного. Основным достоинством этого метода является простота его реализации, а также возможность увеличения диапазона преобразуемых чисел путём добавления дополнительных структурных элементов факториального счётчика и увеличения коэффициента пересчёта двоичного счётчика. Данный метод может эффективно использоваться в устройствах, требующих повышенную надёжность и не предъявляющих высоких требований к быстродействию.
Список литературы: 1. Борисенко А.А., Кулик И.А., Горячев А.Е. Электронная система генерации перестановок на базе факториальных чисел // В1сник СумДУ. Техшчш науки. 2007. №1. С.183-188. 2. Рейнгольд Э., Нивергельт Ю., Део Н. Комбинаторные алгоритмы: теория и практика. М.: Мир, 1980. 477 с. 3. BorisenkoA.A., Kalashnikov V.V., KulikI.A., GoryachevA.E. Generation of Permutations Based Upon Factorial Numbers. Eighth International Conference on Intelligent Systems Design and Applications. Kaohiung, Taiwan, 2008. Р. 57-61. 4. Горячев А.Е. Построение факториальных чисел на основе двоичных счётчиков // Вюник СумДУ. Техтчт науки. 2008. №4.
Поступила в редколлегию 28.08.2009 Горячев Алексей Евгениевич, аспирант кафедры электроники и компьютерной техники Сумского государственного университета. Научные интересы: теория информации и кодирования. Адрес: Украина, 40007, Сумы, ул. Римского-Корсакова, 2, тел. 392-322, e-mail: [email protected]