Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
|
(926)274-88-54 ГлавнаяИнтернет-магазинТкани в наличииМягкая мебельДиваны еврокнижка
Диван-кровать
Диван книжка
Кожаные диваны
Угловые диваны
Кресло-кровать
Недорогие диваны
Кресла
Диваны с фабрики
Кожаная мебель
Производство
Недорогая мебель
Как купитьЗаказ мебелиМебель для домаКухниШкафы купеОфисная мебельШкольная мебельПродажа мебели
Карта сайта
Вакансии
Схема проезда
(926)274-88-54
|
Читальный зал --> Программные средства foundation (а) 15 14 13 12 11 10 9 CUBE: 7 6 5 4 3 2 1 0 . t .f Х8 отсутствует . t .f Рис. 4.41. Внутреннее представление термов-произведений с числом переменных до 16 в программе на языке С: (а) формате общем случае; (Ь) Р1 =Х15 Х12Х10Х9Х4Х1 ХО
Равны и содержат одну 1? да, можно объединять нет, нельзя объединять
xor s поразрядная операция исключающее или and s поразрядная логическая операция и Рис. 4.42. Операции с кубами: (а) определение того, можно ли объединить два куба на основании теоремы Т10: term X * term X = term; (b) объединение термов по теореме T1G /я-мерных кубов дает (т + 1)-мерный куб. Используя представление термов-произведений в виде кубов, можно проиллюстрировать применение теоремы об объединении следующими примерами: 010 + 000 =0x0, 00111001 + 00111000 =0011 lOOx, 101ххОхО+ lOlxxlxO =101ххххО, х11 IxxOOl 10х000х + х11 IxxOOOlOxOOOx =х111хх00х10х000х. Табл. 4.8. Функции сравнения и объединения кубов, используемые в программе минимизации mt EqualCubes(CUBE CI, CUBE C2) /* Beturas true if CI and C2 are identical. */ return < (Cl.t C2.t) tk (Cl.f =- C2.f) ); int OneoneCWORD v) /* Returns true if v has exactly one 1 bit. */ { /* Optimizing the speed of this routine is critical */ mt ones, b; /* and is left as an exercise for the hacker. */ ones 0; for Cb=0; b<HAX VARS; b++) { if (v 4 1) ones++; v = v li return((ones==l)); int CombinableCCUBE CI, CUBE 02) { /* Returns true if CI and 02 differ in only one variable, */ WORD twordt, twordfJ / which appears true in one and false in the other. */ tvordt = Cl.t C2.t; twordf = Cl.f - C2.1; returnC (twordt =twordf) ftft Oneone(twordt) ); void Combine(CUBE 01, CUBE C2, CUBE *C3) /* Combines CI and C2 using theorem TIO, and stores the / { /* result in C3. Assumes Combinable(0i,C2) is true. */ C3->t = Cl.t к C2.t; C3->f = Cl.f lE C2.f; *4.4.2. Нахождение простых импликант путем объединения термов-произведений Первый шаг в алгоритме Куина-Мак-Класки состоит в определении всех простых импликант логической функции. С помощью карт Карно мы делаем это визуально, находя возможно больший прямоугольный набор единиц . В данном алгоритме это осуществляется систематически путем повторного применения теоремы Т10 для обьединения минтермов, 1-мерных кубов, 2-мерных кубов и тд.; в результате получаются кубы возможно большей размерности (наименьшие возможные термы-произведения), покрывающие только такие комбинации переменных, для которых значение функции равно 1. В табл. 4.9 приведена программа на языке С, реализующая этот алгоритм для функций с числом переменных до 16. Для того чтобы оперировать /я-мерными кубами, число которых равно MAX VARS, используются двумерные массивы cubes [m] [ j ] и covered [m] [ j ]. 0-мерные кубы (минтермы) вводятся пользователем. Начиная с 0-мерных кубов, программа на каждом уровне проверяет все #define TRUE 1 #define FALSE О #defiae MAX.CUBES SO void mainO { CUBE cubes[MAX.VARS+1][MAX.CUBES]; int covered[.4AX.VARS+1] [MAX.CUBES] ; int numCubes[MAX VARS+l]; int m; /* Value of m in an a-cube, i.e., level m. */ int J, k, p; ,/* Indices into the cubes or covered array. */ CUBE tempCube; int found; /* Initialize number of m-cubes at each level m. */ for (ш=0; jii<MAX VARS->-l; nimCubesEm] = 0; /* Read a list of minterms (0-cubes) supplied by the user, storing them */ /* in the cubes[0,j] subarray, setting coveredCO.J] to false for each */ /* miaterm, and setting nimCubes[0] to the total number of minterms read. */ ReadMinterms; for (m=0; m<MAX VARS; Я1++) /* Do for all levels except the last / for (3=0; j<numCubes[m]; / Do for ail cubes at this level */ for (k=3+l; k<numCubes[m3; k++) /* Do for other cubes at this level / if (Combmable(cubes [m] [j] , cubes [m] [k] ) ) { /* Mark the cubes as covered. */ covered[m][J] = TRUE; covered[m][k] = TRUE; /* Combine into an (m+D-cube, store in tempCube. */ Combine(cubes[m][j], cubes[m][k], fetempCube); found = FALSE; /* See if weve generated this one before. */ for (p=0; p<numCubes[m+l]; p++) if (EqualCubes(cubes[m+l] [p],tempCube)) found = TRUE; if (Ifound) { /* Add the new cube to the next level. */ numCubesCm+l] = numCubes [m+l] + 1; cubes[m+l] [numCubesLm+ll-l] = tempCube; covered[m+1] [numCubes[m+l]-l] = FALSE; for (m=0; m<MAX VARS; m++) /* Do for all levels */ for (j=0; j<numCubes[m]; j++) /* Do for all cubes at this level */ /* Print uncovered cubes ~ these are the prime implicants, */ if (!covered[m] [j]) PrintCube(cubes[m] [j]) ; возможные пары кубов и объединяет их, когда это возможно, в кубы следующего уровня. Те кубы, которые объединяются в куб следующего уровня, помечаются как покрытые (covered); остающиеся не покрытыми кубы являются простыми импликантами. Табл. 4.9. Программа на языке С, которая находит простые импликанты по алгоритму Куина-Мак-Класки ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |