Главная Рефераты по сексологии Рефераты по информатике программированию Рефераты по биологии Рефераты по экономике Рефераты по москвоведению Рефераты по экологии Краткое содержание произведений Рефераты по физкультуре и спорту Топики по английскому языку Рефераты по математике Рефераты по музыке Остальные рефераты Рефераты по авиации и космонавтике Рефераты по административному праву Рефераты по безопасности жизнедеятельности Рефераты по арбитражному процессу Рефераты по архитектуре Рефераты по астрономии Рефераты по банковскому делу Рефераты по биржевому делу Рефераты по ботанике и сельскому хозяйству Рефераты по бухгалтерскому учету и аудиту Рефераты по валютным отношениям Рефераты по ветеринарии Рефераты для военной кафедры Рефераты по географии Рефераты по геодезии Рефераты по геологии Рефераты по геополитике Рефераты по государству и праву Рефераты по гражданскому праву и процессу Рефераты по делопроизводству Рефераты по кредитованию Рефераты по естествознанию Рефераты по истории техники Рефераты по журналистике Рефераты по зоологии Рефераты по инвестициям Рефераты по информатике Исторические личности Рефераты по кибернетике Рефераты по коммуникации и связи |
Курсовая работа: Минимальные формы булевых многочленовКурсовая работа: Минимальные формы булевых многочленовФедеральное агенство по образованию РФ Саратовский государственный университет имени Н.Г. Чернышевского Кафедра геометрии курсовая работа Минимальные формы булевых многочленов г. Саратов 2009 г. содержание Введение Основные понятия булевой алгебры 1.1 Основные этапы развития булевой алгебры 1.2 Основные определения булевой алгебры 1.3 Минимальные формы булевых многочленов II.Решение минимальных форм булевых многочленов с помощью метода Куайна – Мак-Класки Заключение Список используемых источников. ВВЕДЕНИЕ Булевы алгебры – это решетки особого типа, которые применяются при исследовании логики (причем как логики человеческого мышления, так и цифровой компьютерной логики), а также переключательных схем. Это последнее приложение было инициировано К. Шенноном, показавшим, что фундаментальные свойства электрических сетей, состоящих из бистабильных элементов, могут быть выражены с помощью булевых алгебр. Наряду с шенноном пионерами в применении теории булевых алгебр для решения задач релейной техники в 1936-1938 гг. были русский математик В.И. Шестаков и японцы А.Накасима и М. Ханзава. Отметим также, что ещё в 1910 г. известный физик П. Эренфест в рецензии на русский перевод книги Л. Кутюра «Алгебра логики» указал на потенциальную применимость булевой логики к проектированию автоматических телефонных станций, сформулировав вопросы о реализуемости булевых функций и минимизации схем. Целью данной курсовой работы является изучение булевой алгебры и применение минимальных форм булевых многочленов к решению задач. Курсовая работа состоит из введения, трех глав, заключения и списка используемых источников. Во введении описана актуальность темы, сформулирована цель, дана структура курсовой работы. В первой главе даны основные определения и основные понятия булевой алгебры. Во второй главе дается определение минимальных форм булевых многочленов и намечен курс дальнейшего исследования. Третья глава посвящена применению минимальных форм булевых многочленов к решению задач. В заключении сформулированы основные выводы к работе. I. ОСНОВНЫЕ ПОНЯТИЯ БУЛЕВОЙ АЛГЕБРЫ 1.1 Основные этапы развития булевой алгебры. В 1847 году Дж. Буль написал маленькую, но эпохальную книгу «математический анализ логики», в которой логика трактовалась как чисто формальная система; интерпретация в обычном языке пришла позже. Буль писал, что математика характеризуется своей формой, но не содержанием. В своей последующей книге «Исследование законов мышления» (1854) он ввел понятие булевой алгебры. Булевское исчисление логики сосредоточено на формальной трактовке логики посредством математических (особенно алгебраических) методов и на описании логических тождеств. Следуя Булю, школа английских математиков, а также Шрёдер, Уайтхед разработали аксиоматику операций конъюнкции, дизъюнкции, отрицания; с другой стороны, Пирс и Шрёдер создали аксиоматику порядка, используя отношение включения в качестве фундаментального понятия. В 1904 году Хантингтон исследовал две системы аксиом и начал трактовать булевы алгебры как самостоятельные математические структуры, не обязательно связанные с логикой. Буль использовал дистрибутивность пересечения относительно объединения, которую еще до него отметил Ламберт. Буль работал с множествами. Обозначая пересечение х и у через ху, а объединение – через х + у, если х и у дизъюнкты. Подобно Лейбницу, он интерпретировал отношение включения х Í у как ху = х, что легко давало возможность получить классические правила силлогизма. Затем Джевонс распространил операцию объединения на произвольные х и у; Де Морган и, позже, Пирс доказали соотношение двойственности, называемые законами де Моргана. Большинство логиков девятнадцатого века не высказывало большого интереса к применению в математике своих находок. Одной из причин этого было отсутствие кванторов, введенных позже Фреге и Пирсом. Пеана, среди прочих, ввел символы È, Ç, - для объединения, пересечения и вычитания множеств. После книги ван дер Вардена по современной алгебре понятие универсальной алгебры было уже не за горами. Биркгоф развил концепцию «алгебры», отправляясь от подходов ван дер Вардена, и взял название «универсальная алгебра» из книги Уайтхеда. в 1934 году, будучи в Геттингене, Маклейн также высказывал некоторые мысли об универсальной алгебре, но не опубликовал их. Одна из фундаментальнейший статей по теории решеток была напечатана Оре в 1935 году. Последующие годы ознаменовались целым рядом исследований в области, как теории, так и приложений решеток, например, в теории групп, проектированной геометрии, квантовой механике, функциональном анализе, теории меры и интегрирования. В 1933 – 1937 гг. М. Стоун получил важные результаты о булевых алгебрах, которые он интерпретировал как специальные кольца, а именно как булевы кольца, где была применима теория идеалов. Другие фундаментальные вопросы, рассматривавшиеся Стоуном, - это вопросы о представлении булевых алгебр и приложения булевых алгебр в топологии. С тех пор теория решеток превратилась во вполне жизнеспособную, сильную и самостоятельную дисциплину. 1.2 Основные определения и понятия булевой алгебры Определение: Булевой алгеброй (обозначим В) называется непустое множество элементов с двумя бинарными операциями «+», «*» и одной унарной операцией «`», а так же специальными элементами 0 и 1, если выполняются следующие свойства: 1. a + b = b + a ," a , b B 2. a * b = b * a ," a, b B 3. a + (b * c) = (a + b) * (a + c) 4. a* (b + c) = (a * b) + (a * c) 5. a + 0 = a, a * 1 = a. (Тождественность) 6. a + a` = 1, a * a`= 0. (Дополнительность) Эта система аксиом является полной и независимой. Пример 1: Пусть множество В – это множество В= {1,0} на котором заданы две бинарные операции:
И унарная операция: 0` = 1, 1` = 0. Пример 2: Множество делителей числа 70:<1,2,5,7,10,14,35,70> 1. a + b = НОД (a, b) 2. a * b = НОК (a, b) 3. a` = 70/a Определение: Пусть С - непустое подмножество множества В. Говорят, что С - подалгебра алгебры В, если она сама является алгеброй с теми же операциями. Подмножество С - есть подалгебра алгебры В Û С замкнуто относительно трех операций. Пример 3: Если С=<1,2,35,70> замкнуто относительно операций «+», «*», «`», тогда С является подалгеброй алгебры В. Определение: Две булевы алгебры В и В` изоморфны: В ~ В`, если существует взаимно-однозначная функция f: B®B`, такая, что: 1. f (a + b) = f (a) + f (b) 2. f (a * b) = f (a) * f (b) 3. f (a`) = (f (a))` Для булевой алгебры справедливы принципы дуальности. Основные теоремы абстрактной булевой алгебры. 1. Идемпотентный закон: a + a = a, a * a = a. 2. Граничный закон: a + 1 = 1, a + 0 = a. 3. Абсорбционный закон: a + (a * b) = a, a * (a + b) = a. 4. Ассоциативный закон: a + (b + c) = (a + b) + c, a * (b * c) = (a * b) * c. 5. Единственность дополнения: если $ x: a + x = 1 , a * x = 0, то x = a`. 6. Инволютивный закон: ((a`))` = a Þ 0` = 1 , 1` = 0. 7. Закон де Моргана: (a + b)`=a` * b`, (a * b)` = a` + b`. Булева алгебра как решетка. Поскольку для булевой алгебры справедливы ассоциативный, коммутативный и абсорбционный законы, то согласно определению булева алгебра есть решетка. В этой решетке "а, а + 1 = 1 Þ а £ 1 , а * 0 = 0 Þ 0 £ а. Таким образом В есть ограниченная решетка, кроме того аксиомы (2) и (4) указывают на то, что решетка дистрибутивна и дополнена. И наоборот, любая ограниченная, дистрибутивная и дополненная решетка есть булева алгебра. Определение: Булева алгебра – это ограниченная, дистрибутивная и дополненная решетка. Мы можем ввести на булевой алгебре отношение частичного порядка. Полагаем, что a £ b Û a Ú b = b , a Ù b = a. Теорема. В булевой алгебре следующие выражения эквивалентны: 1) a + b = b 2) a * b = a 3) a` + b = 1 4) a * b` = 0. Доказательство. 1. Докажем эквивалентность (1) и (3) а) Пусть (1) верно, тогда a` + b = a`+ (a + b) = (a` + a) + b = 1 + b = 1; b) Пусть (3) верно, тогда a + b = (a` + b) * (a + b) = b * (a + a`) = b * 1 = b; 2. Докажем эквивалентность (3) и (4) a) Пусть (3) верно, тогда 0 = 1` = (a` + b)` = (a`)` * b` = a * b`; b) Пусть (1) верно, тогда 1 = 0` = (a + b`)` = a` + (b`)` = a` + b; 3. Докажем эквивалентность (2) и (4) a) Пусть (2) верно, тогда a * b` = (a * b) * b` = a * (b * b`) = a * 0 = 0; b) Пусть (4) верно, тогда a * b = a * b + 0 = a * b + a * b` = a * (b + b`) = a * 1 = a; Тогда выражения (1), (2), (3), (4) эквивалентны. Пример 1. Рассмотрим алгебру множеств – модель булевой алгебры.А £ В если А Ì В. 1. АÚВ=В 2. АÙВ=А 3. АÚВ=U 4. АÙВ`=Æ Любая конечная булева алгебра может содержать лишь 2 в степени n элементов, где n – натуральное число. Пример 2. 1) Множество делителей 70-ти D=<1,2,5,7,10,14,35,70>. Множество A=<2,5,7> -множество атомов решетки D. 10 = 2 Ú 5 14 = 2 Ú 7 35 =5 Ú 7 70 = (2 Ú 5) Ú 7 70
10 14 35 2 5 7 1 2) Множество А = {2,5,7} Отношение вложенности. {2,5,7}
{2,5} {2,7} {5,7} {2} {5} {7}
Æ Эта решетка изоморфна предыдущей. Алгебра множеств и алгебра высказываний являются моделями абстрактной булевой алгебры. Все абстрактные булевы алгебры (которые состоят из одинакового числа элементов) изоморфны. 1.3 Минимальные формы булевых многочленов Определение. Понятие булева многочлена определяется рекурсивно. Пусть Хn = {x1,…, xn} – множество из n символов (называемых неизвестными или переменными), которое не содержит символов 0 и 1. Булевы многочлены над Хn суть объекты, которые могут быть получены последовательным применением следующих правил: (I) х1, х2, …, хn, 0,1 – булевы многочлены; (II) если p и q – булевы многочлены, то таковыми являются и (p) Ù (q), (p) Ú (q), (p)¢. Обозначим множество всех булевых многочленов над Хn через Рn. Пример. Вот несколько примеров булевых многочленов над {х1, х2}: 0,1, х1, х2, х1 Ù х2, х1 Ú х2, х1¢, х1¢ Ù х2. Так как любой булев многочлен над x1,…, xn модно рассматривать как булев многочлен над x1,…, xn, xn+1, мы имеем Р1Ì Р2 Ì… Ì Рn Ì Рn+1 Ì… Булев многочлен можно упростить с помощью аксиом булевой алгебры. В процессе упрощения часто трудно решить, какие аксиомы и в каком порядке должны быть использованы. Но существуют некоторые систематические методы упрощения булевых многочленов. Недостатком большинства этих методов является возможность их практического внедрения, когда число переменных слишком велико. Соответствующая проблематика в теории булевых алгебр носит общее название проблема оптимизации или минимизации булевых многочленов; она важна для таких приложений, как упрощение переключательных схем. Определение. Назовем литералом любую переменную хi и ее дополнение хi¢, а также 0 и 1. Под произведением понимается произведение нескольких литералов, т.е. булев многочлен, в котором нет знака +. Дизъюнктивным выражением или просто выражением назовем буле многочлен, являющийся суммой произведений. Слагаемые в таком выражении назовем дизъюнктами. Обсуждая упрощение булевых многочленов, мы ограничимся важным случаем сведения дизъюнктивных выражений к «минимальным выражениям» относительно специального условия минимальности. Обозначим через df общее число литералов в выражении f, а через ef – число дизъюнктов. Мы говорим, что выражение f проще выражения j, если df £ dg, ef £ eg и хотя бы одно из этих неравенств строгое. Выражение f называется минимальным, если не существует выражения, которое было бы эквивалентно f и проще f. Таким образом, мы будем искать «кратчайшее» выражение с наименьшим возможным числом литералов, которое было бы эквивалентно f. Такое минимальное выражение не всегда определено однозначно. Я опишу один из нескольких существующих методов упрощения. Он основан на работе Куайна и был улучшен Мак-Класки, поэтому называется методом Куайна - Мак-Класки. Определение. многочлен p влечет многочлен q, если для любых b1,…., bn Î В рв (b1, …, bn) = 1 влечет qв (b1, …, bn) = 1; в этом случае р называется импликантом для q. Простым импликантом многочлена р называется произведение , которое влечет р, но если в вычеркнуть хотя бы один сомножитель, то результат уже не влечет р. Произведение, сомножители-литералы которого образуют подмножество сомножителей-литералов другого произведения, называется подпроизведением последнего. Пример. Произведение х1х3 является подпроизведением как х1х2х3, так и х1х2¢х3, и влечет выражение р = х1х2х3 + х1х2¢х3 + х1¢х2¢х3¢, поскольку (х1х3)(1, i2, 1) = 1 и р(1, i2, 1) = 1, а для других значений аргументов х1х3 дает 0. Ни х1, ни х3 не влекут р; например, х1(1, 1, 0) = 1, но р(1, 1, 0) = 0, поэтому х1х3 – простой импликант для р. Теорема. Любой многочлен р Î Pn эквивалентен сумме всех своих простых импликантов. Выражение, являющееся суммой простых импликантов для р, называется неприводимым, если оно эквивалентно р, но пересекает быть таковым, если удалить хотя бы одно слагаемое. Минимальное выражение должно быть неприводимым. Поэтому, чтобы определить минимальное выражение, мы находим все неприводимые выражения, а среди них ищем выражение с наименьшим числом литералов. Изложим теперь принадлежащий Куайну метод определения простых импликантов. Простые импликанты получаются из дизъюнктивной нормальной формы d булева многочлена р применением (слева направо) правила yz + yz¢ ~ y, когда это возможно. Более общо, мы используем правило (*) где и - произведения. следующий пример поможет понять смысл описываемой процедуры. Пример. Пусть р – булев многочлен, имеющий следующую дизъюнктивную нормальную форму: d = wxyz’ + wxy’z’ + wx’yz + wx’yz’ + w’x’yz + w’x’yz’ + w’x’y’z Мы используем правило и законы идемпотентности для тех (из общего числа () = 21) пар дизъюнктов в d, для которых это возможно, тем самым «укорачивая» произведения. например, превый и второй дизъюнкты при использовании (*) дают wxz’. Если в процессе упрощения слагаемые используются хотя бы один раз, то оно помечается. Так как знак + стоит вместо Ú, выражение может быть использовано любое число раз, но помечается не более одного раза. Таким образом, все помеченные произведения содержат более короткие произведения и поэтому не могут быть простыми импликантами. В целом в первом раунде этого процесса мы переходим от wxyz’ и wxy’z’ к wxz’ от wx’yz и wx’yz’ к wx’y от wxyz’ и wx’yz’ к wyz’ от w’x’yz и w’x’yz’ к w’x’y от w’x’yz и w’x’y’z к w’x’z от wx’yz и w’x’yz к x’yz от wx’yz’ и w’x’yz’ к x’yz’ Здесь использованы, и потому должны быть помечены, все семь слагаемых. В общем, эта процедура повторяется снова и снова с использованием только помеченных выражений (которые становятся короче). Прочие произведения суть простые импликанты и остаются неизменными. В нашем примере второй раунд упрощения осуществляет переход от wx’y и w’x’y к x’y от x’yz и x’yz’ к x’y Четыре выражения - wx’y, w’x’y, x’yz, x’yz’ – помечены. Остальные произведения, а именно wxz’, wyz’, w’x’z не могут быть упрощен. следовательно, р эквивалентно такой сумме простых импликантов: р ~ wxz’ + wyz’ + w’x’z + x’y. Как уже было сказано, Мак-Класки улучшил это метод. Чтобы описать улучшенный алгоритм, используем многочлен d = wxyz’ + wxy’z’ + wx’yz + wx’yz’ + w’x’yz + w’x’yz’ + w’x’y’z Шаг 1. Считая переменные упорядоченными по алфавиту (или по номерам), поставим в соответствие каждому произведению последовательность символов из {0, 1, -}: вместо xi’ и xi запишем 0 и 1 соответственно, а вместо опущенных переменных запишем черточку. Например, вместо w’x’y’z запишем 0001, а вместо w’x’z – 00-1. Шаг 2. Произведения, рассматриваемые как троичные n-ки, разбиваются на классы эквивалентности в соответствии с числом единиц. Упорядочим классы по возрастанию этого числа. В нашем примере: w’x’y’z0 0 0 1 w’x’yz’0 0 1 0 w’x’yz0 0 1 1 wx’yz’1 0 1 0 wx’yz 1 0 1 1 wxyz’1 1 1 0 wxy’z’1 1 0 0 Шаг 3. Используя правило (*), нужно складывать только произведения из соседних классов, т.е. когда числа единиц в соответствующих последовательностях отличаются лишь на 1. При этом мы должны сравнивать выражения из соседних классов, имеющих черточки в одних и тех же позициях. Если два таких выражения отличаются точно в одной позиции, то они имеют вид р = i1i2…ir…in и q = i1i2…ir’…in, где все ik лежат в {0, 1, -}, а ir лежит в {0, 1}. Тогда (*) сводит p, q к i1i2…ir-1 - ir+1 …in, причем p и q должны быть помечены. В рассматриваемом примере это дает такие четверки (метки относятся к следующему раунду, тогда как в предыдущем списке все произведения следовало пометить): 0 0 - 1 0 0 1 -ü - 0 1 0ü - 0 1 1ü 1 0 1 -ü 1 - 1 0 1 1 - 0 Помеченные выражения не являются простыми импликантами и во втором раунде этого шага дают единственное выражение - 0 1 - Итак, мы нашли все простые импликанты, а именно 0 0 1 - w’x’z - 0 1 0 wyz’ - 0 1 1 wxz’ 1 0 1 - x’y Так как сумма всех простых импликантов необязательно является минимальным выражением, алгоритм требует выполнения ещё одного шага. Шаг 4. В силу теоремы сумма всех простых импликантов для р эквивалентна р. поэтому для каждого слагаемого дизъюнктивной нормальной формы d многочлена р должен существовать простой импликант, являющийся произведением этого слагаемого. для выявления возникшего соответствия удобно использовать таблицу простых импликантов. столбцы этой таблицы индексируются дизъюнктами из d, а строки – простыми импликантами, вычисленными в шаге 3. на пересечении i-й строки и j-го столбца ставится крестик û, если простой импликант из i-й строки является подпроизведением произведения из j-го столбца. Говорят, что одно произведение покрывает, если первое является подпроизведением второго. Для того, чтобы найти сумму простых импликантов, которая будет эквивалентна d , мы из множества всех простых импликантов выбираем подмножество таким образом, чтобы каждое слагаемое в d покрывалось по крайней мере одним импликантом из подмножества. Тогда минимальной формой будет сумма простых импликантов с наименьшим числом членов и наименьшим числом букв. Простой импликант называется главным членом, если он покрывает произведение, не покрываемое никаким другим простым импликантом; сумма всех главных членов называется ядром. сначала мы находим ядро, затем обозначаем через q1,…,qk произведения, не покрываемые простыми импликантами из ядра; простые импликанты, не входящие в ядро, обозначим через р1,…,рm. Далее формируем таблицу, столбцы которой индексируются элементами qi, а строки – элементами рi. Крестик û на месте (i, j) указывает, что рi покрывает qj. Теперь образуем произведение сумм. Каждый сомножитель соответствует одному из qj и является суммой тех рi, который покрывают этот qj. Используя законы булевой алгебры, мы преобразуем это выражение в простейшую возможную сумму произведений. Каждое из этих произведений представляет подмножество элементов рi, которые покрывают все qj. Далее рассматриваем произведения с наименьшим числом сомножителей. Из этих кратчайших произведений выбираем те, что содержат наименьшее общее число литералов. Теперь каждое из полученных произведений переписываем в виде суммы составляющих его простых импликантов, складываем с ядром, получая минимальную сумму произведений, эквивалентную р. II.РЕШЕНИЕ МИНИМАЛЬНЫХ ФОРМ БУЛЕВЫХ МНОГОЧЛЕНОВ С ПОМОЩЬЮ МЕТОДА КУАЙНА – МАК-КЛАСКИ Задача. Определим форму булева многочлена р, заданного в дизъюнктивной нормальной форме d = v’w’x’y’z + v’w’x’yz + v’w’xy’z + v’w’xyz + v’wx’y’z + v’wx’yz + v’wxy’z + v’wxyz + v’wxyz + vw’x’y’z + vw’x’y’z + vw’xy’z + vwx’yz + vwxy’z + vwxyz + vwxyz Решение: Шаги 1 и 2
Шаг 3. Комбинация строк (i) и (j) дает сокращение, указанное в строке (i)(j):
Повторение этого шага с новыми строками дает нам
Пометки «птичкой» ü и буквами сделаны после процесса упрощения. найденные простые импликанты обозначены буквами А, В, …J. Шаг 4. Формируем таблицу простых импликантов, где индексы столбцов – слагаемые из d – представлены в виде двоичных столбцов.
В наших кратких обозначениях ядро, т.е. сумма главных членов, есть D + H + G + B + E + A. Единственным произведение, не покрываемым ядро, является (4); это и есть q1. Простыми импликантами pi, не входящими в ядро, являются С, F, I, J. Новая таблица имеет вид
Это обозначает, что мы получаем две минимальные форы: (i) D + H + G + B + E + A + I, если использовать I, и (ii) D + H + G + B + E + A + J, если выбрать J. В обычных обозначениях минимальная форма (i) такова: v’w’z’ + v’wy’z + vw’y’z + wyz’ + vwxz’ + wxy + vw’x’y’. ЗАКЛЮЧЕНИЕ По результатам проведённого курсового исследования по теме «Минимальные формы булевых многочленов» можно сделать следующие выводы. При всей простоте своей аксиоматики теория булевых алгебр весьма содержательна. Мы находим в ней немало трудных и глубоких проблем, многие из которых ещё не решены. Эти проблемы весьма разнообразны, они соприкасаются с логикой и теорией множеств, с теорией вероятностей и анализом. Такое обилие точек соприкосновения со смежными математическими дисциплинами роднит теорию булевых алгебр с функциональным анализом, к которому она близка и по своему общему математическому стилю. Существуют различные методы нахождения минимальных форм булевых многочленов. В своей курсовой работе я исследовала один из методов - метод Куайна - Мак-Класки. Он предназначен для нахождения множества простых импликант для функций, заданных совокупностью наборов, на которых функция равна единице, или дизъюнктивной совершенной нормальной формой. Умение минимизировать логические функции имеет огромное значение при проектировании устройств цифровой электроники. СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 1. Владимиров Д.А., Булевы алгебры – М., Издательство «Наука» 1969. 2. Дискретная математика и математические вопросы кибернетики – под общей редакцией С.В. Яблонского и О.Б. Лупанова – М., «Наука», 1974. 3. Лидл Р., Пильц Г., «Прикладная абстрактная алгебра» - Екатеринбург, «Издательство уральского университета» 1996. 4. www.exponenta.ru/educat/systemat/1006/2_tutorials/bin_log.asp 5. www.intuit.ru/department/hardware/archsys/keywords.2.html |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||