- •Лекция 1 компоненты и топология схем
- •1.1. Компоненты электронных схем
- •Лекция 2.
- •Лекция 3.
- •1.2. Модели электровакуумных ламп и транзисторов
- •Лекция 4.
- •Лекция 5.
- •Лекция 6.
- •Лекция 7.
- •Лекция 8.
- •1.3.Компонентные и топологические уравнения
- •Лекция 9.
- •Лекция 10.
- •Лекция 11.
- •Лекция 12.
- •Лекция 13.
- •1.4. Преобразование уравнений схемы
- •Лекция 14.
- •Лекция 15.
- •Лекция 16.
- •1.5. Машинные алгоритмы выбора фундаментального дерева и оптимального разбиения ветвей
- •Лекция 17.
- •1.6. Уравнений в однородных системах координат
Лекция 16.
1.5. Машинные алгоритмы выбора фундаментального дерева и оптимального разбиения ветвей
Алгоритм выбора фундаментального дерева
Обычно основные процедуры формирования исходных уравнений схемы (выбор фундаментального дерева, оптимальное разбиение ветвей, построение и преобразование матрицы сечений) реализуют на ЭВМ преобразованием структурной матрицы (§ 1.3). Так как размер этой матрицы по строкам определяется числом вершин v и по столбцам — числом ветвей l графа (υ∙l), причем она является сильно разреженной (коэффициент заполнения ненулевыми элементами равен 2l/υl = 2/υ), то в случае сложных схем использование полной структурной матрицы приводит к большой загрузке оперативной памяти.
Среди множества возможных алгоритмов, позволяющих свести соответствующие процедуры к операциям на множествах вершин и ветвей графа, рассмотрим алгоритмы, основанные на теоретико-множественном подходе [119].
Структура графа определяется множеством его ветвей X={x1, х2, ... , xl), каждая из которых задается упорядоченной тройкой хi = (αi, βi, γi). где αi и βi — cooт-ветственно начальная и конечная вершины, а γi — код ветви хi (i=l, 2, ..., l). Множество V вершин графа представляется последовательностью v целых чисел, так что αi и βi — некоторые числа из V={1, 2, ..., υ}, т. е. αi, βiЄV. Код γi содержит информацию о подмножестве, к которому относится ветвь xi и ее номера в этом подмножестве. Индекс i указывает на положение данной ветви в некоторой упорядоченной последовательности
ветвей графа. Например, у-ветвь с номером 8, направленная от вершины 23 к вершине 15 и расположенная двенадцатой в последовательности ветвей, запишется следующим образом: х12 = (23, 15, y8).
Процедура формирования фундаментального дерева (ФФД) сводится к просмотру ветвей графа в установленной последовательности (иерархии) и их распределению между деревом и дополнением. Очередную ветвь вводят в дерево при условии, что она не образует контура с выбранной ранее совокупностью ветвей дерева. В результате множество X разбивают на два непересекающихся подмножества: подмножество ветвей дерева ХT и подмножество хорд XN.
В
промежуточной ситуации совокупность
ветвей графа, отнесенных к дереву,
образует некоторый (вообще несвязный)
подграф (рис. 1.40,а). Множества вершин
каждой его части совместно с одноэлементными
множествами, содержащими не вошедшие
в этот подграф вершины, образуют
совокупность классов эквивалентности
Vj
и
определяют на Множестве V
соответствующие
разбиения. Ясно, что ветвь xi
должна
быть отнесена к дереву, если и только
если инцидентные ей вершины αi
и βi
принадлежат различным классам
эквивалентности. Пусть αi
Vr,
βi
Vs;
тогда xi
XT
при
условии Vr≠Vs
и
xi
XN
при
условии Vr=Vs.
Включение ветви xi
в
дерево означает объединение тех частей
подграфа ветвей дерева, к которым
принадлежат вершины этой ветви, т. е.
классы эквивалентности Vr
и
Vs
объединяются
в класс Vr
U
Vs.
Включение
ветви xi
в
дополнение не изменяет разбиения
множества вершин V.
В исходном положении все v классов эквивалентности содержат по одной вершине, т. е. имеем сначала полное разбиение множества вершин. Первая же рассматриваемая ветвь относится к дереву и представляет двухэлементный класс, объединяющий пару вершин, инцидентных этой дуге. В дальнейшем каждое включение ветви в дерево сопровождается объединением двух классов эквивалентности, так что при наличии в дереве q ветвей разбиение состоит из υ—q классов. Процесс формирования дерева заканчивают после того, как совокупность ветвей графа образует дерево — связный подграф, не содержащий контуров. Ему соответствует полное отношение эквивалентности, при котором множество всех вершин графа образует единственный класс. В случае, если граф схемы несвязный, конечное разбиение содержит столько же классов эквивалентности, сколько частей имеется в исходном графе, причем каждый из этих классов объединяет все вершины соответствующей части.
При машинной реализации процедуры ФФД последовательные разбиения образуются идентификацией вершин на одномерном массиве, содержащем v ячеек, расположенных в той последовательности, которая принята при нумерации вершин. Так как любая вершина из данного класса может служить его представителем, то всем таким вершинам присваивается номер одной из них, который заносится в соответствующие ячейки. В исходном положении содержимое ячеек совпадает с их номерами, а в конечном — все ячейки для каждой части графа содержат одинаковые номера.
При рассмотрении очередной ветви xi на массиве вершин содержимое ячеек считывается по адресам для αi и βi, в результате чего идентифицируются вершины в соответствующих классах эквивалентности, т. е. αi→ri, βi→si, где ri и si — номера вершин, играющих роль представителей этих классов (рис. 1.40,б). При ri = si ветвь xi относится к дополнению (xi XN), а при ri≠si ветвь xi относится к дереву (хi ХT) и одновременно идентифицируется ri=si на множестве вершин v (во все ячейки, содержащие число ri, заносится число si). Процедура ФФД повторяется до тех пор, пока не будет сформировано дерево. При наличии в графе взаимно определенных дуг процедура ФФД прерывается после рассмотрения всех (е, у)-дуг, так как необходимо решить вопрос о распределении взаимно определенных ветвей между множествами у и z. Соответствующая процедура оптимального разбиения взаимно определенных ветвей (ОР) будет рассмотрена далее. После ее выполнения процедура ФФД продолжается до образования v ветвей дерева или просмотра всех дуг графа. В последнем случае имеется возможность провести контроль по следующим тестам:
1) все ли е-ветви вошли в дерево (е VT?);
2) все ли j-ветви вошли в дополнение (j VN?);
3) равно ли число ветвей дерева числу независимых сечений (lT=ν?). При утвердительных ответах процедура заканчивается. Наличие хотя бы одного отрицательного ответа свидетельствует о некорректности исходных данных или ошибке в операциях.
Алгоритм оптимального разбиения взаимно определенных ветвей
Компонентные уравнения взаимоопределенных ветвей могут быть выражены как для токов, так и для напряжений, поэтому имеется некоторая свобода в распределении таких ветвей между подмножествами у и z. Это обстоятельство используют для дальнейшего сокращения координатного базиса оптимальным разбиением ay-ветвей, максимизирующим число образующихся вырожденных координат.
Как видно из соотношения (1.172), каждая новая y-ветвь увеличивает число вырожденных координат μ на единицу, а объединение двух частей (е, у) -графа уменьшает эту величину на два. Таким образом, к y-ветвям следует относить прежде всего те до-ветви, которые не связывают отдельных частей (е, у) -графа. Ветви, объединяющие какие-либо две части (е, у)-графа, целесообразно относить к у-ветвям, если их число не меньше двух.
В исходной последовательности ветвей графа до-ветви размещаются между подмножествами у и е. После применения процедуры ФФД к (е, у) -ветвям приходим к промежуточному разбиению на множестве вершин графа, при котором классы эквивалентности объединяют вершины соответствующих частей (е, у) -графа. Очевидно, ω-ветвь xj должна быть отнесена к y-ветвям в двух случаях:
1) если инцидентные ей вершины принадлежат к одному и тому же классу эквивалентности, т. е. αj,
2) если вершины принадлежат различным классам αj Vr и βj Vs, но найдется хотя бы еще одна ветвь xk такая, что αk Vr и βk Vs или αk Vs и βk Vr.
Процедуру ОР начинают с идентификации вершин всех до-ветвей в соответствии с разбиением множества V, которое образовалось после просмотра всех (е, у)-ветвей в процедуре ФФД. Для этого номера вершин αj и βj до-ветвей (j=1, ..., lω) заменяют по схеме рис. 1.40,б содержимым соответствующих ячеек (представителями классов разбиения) массива вершин графа, т. е. осуществляется преобразование αj→rj; βj→sj (j=1, 2, . . ., lω). Сравнивая числа rj и sj, при rj=sj ветвь xj относят к y-ветвям (хj Ху), а при rj≠sj пару чисел упорядочивают так, чтобы первое из них было меньше второго (это создает удобства на следующем этапе попарного сравнения до-ветвей).
После такого упорядочения и исключения ветвей, которые перенесены к множеству y-ветвей, получаем модифицированный массив до-ветвей. На нем сравнивают до-ветви и при обнаружении первой же пары, отвечающей второму из приведенных условий, идентифицируют массив вершин (rj=sj). Затем процедуру ОР повторяют до тех пор, пока после очередного сравнения не будет обнаружено ни одной пары ветвей, идентифицированные вершины которых соответственно совпадают. В результате получаем разбиение ω-ветвей, исходный массив которых представляется в новой последовательности: сначала располагаются y-ветви, выделенные процедурой ОР, а за ними следуют остальные ω-ветви, которые относятся к z-ветвям. Преобразованные коды ω-ветвей заносятся в память и при необходимости выводятся на печать.
Алгоритм определения матрицы сечений
Каждое сечение разбивает множество V вершин графа на два подмножества [108]. Одно из них V0k, называемое нижней областью, объединяет вершины, которые фундаментальное дерево связывает с начальной вершиной ветви k-го сечения. Другое подмножество V1k, называемое верхней областью, объединяет вершины, которые фундаментальное дерево связывает с конечной вершиной ветви k-го сечения (рис. 1.41). Очевидно, вершины инцидентной хорды должны принадлежать разным частям данного сечения, т. е. хорда xj = (αj, βj) инцидентна сечению k, если αi V0k и βj V1k или αi V1k и βj V0k. В первом случае инцидентная хорда совпадает по направлению с сечением (берется со знаком плюс), а во-втором — противоположна сечению (берется со знаком минус).
Это
положение используют для получения
подмножеств хорд, инцидентных сечениям
k=1,
2,
..., ν,
причем совокупность таких подмножеств
для всех сечений полностью определяет
матрицу сечений π
для хорд. Процедура определения матрицы
сечений (ОМС) для данного k
начинается
с разбиения множества вершин V
на
подмножества V0k
и
V1k,
в
качестве представителей которых
принимают соответственно числа 0 и 1.
Предварительно в ячейку αk
массива вершин графа заносят нуль, а в
остальные ячейки — единицы, и на этом
массиве поочередно считываются значения
для вершин всех ветвей дерева, кроме
k-й.
ветви.
Идентифицированные значения (ρj,
qj)
вершин
(αj,
βj)
ветви
дерева xj
принимают
значения 0 или 1. Если их сумма по модулю
два ρj
qj
=
1, то
на массиве вершин в ячейки для αj
и
βj
заносятся нули. После просмотра всех
ветвей дере
вa процедуру повторяют до тех пор, пока очередной просмотр уже не изменяет разбиения на массиве вершин графа (признаком окончания разбиения вершин на нижнюю и верхнюю область является значение ω = 0).
Следующий этап ОМС сводится к поочередному рассмотрению хорд и идентификации их вершин аj→ρj и βj→qj в соответствии с разбиением, полученным на предыдущем этапе. Очевидно, хорда xj инцидентна k-му сечению, если ρj≠qj, причем она совпадает по направлению с сечением при ρj=0 и противоположна ему при ρj=1. По этим признакам код γj заносится в список инцидентных хорд с соответствующим знаком.
Процедуру ОМС повторяют для всех сечений (k=l, 2, ..., ν), причем каждый раз предварительно восстанавливается массив вершин (во все ячейки заносятся единицы). Признаком окончания этой процедуры является выполнение равенства k=v. Полученные в результате множества xh хорд, инцидентных сечениям k=l, 2, ..., ν, позволяют построить матрицу сечений я (если она требуется). Для этого достаточно в k-й строке прямоугольной матрицы размера (ν∙σ) поставить ±1 в столбцах для хорд из xk с соответствующим знаком.
Пример формирования сокращенного координатного базиса
Объединение процедур ФФД и ОР с процедурой ОМС составляет машинный алгоритм формирования сокращенного координатного базиса. В качестве примера рассмотрим граф (рис. 1.42,а), ветви которого xi=(αi, βi, γi) заданы в соответствии с установленной иерархией многомерным массивом
Идентификацию вершин при последовательном рассмотрении (е, у)-ветвей в процедуре ФД и соответствующие разбиения на массиве вершин графа представим следующим образом:
При i=l'=6 процедура ФФД прерывается и последнее разбиение используется для идентификации вершин ω-ветвей. Преобразование массива ω-ветвей в соответствии с процедурой ОР имеет вид
Идентификация вершин ω-ветвей по
промежуточному разбиению
Модификация массива ω-ветвей
Идентификация вершин ω-ветвей
2:=7
Модификация массива ω-ветвей
Идентификация вершин ω-ветвей
5:=7
Модификация массива ω-ветвей
В результате получим разбиение с перекодировкой ω-ветвей и соответствующей перестановкой в исходной последовательности:
С учетом полученного разбиения ω-ветвей завершается процедура ФД:
Массив вершин
Ветви дерева
Хорды
Эти подмножества являются исходными для процедуры ОМС. Для сечения, определяемого ветвью дерева e1, имеем (k=1)
Массив вершин
Идентифицируя вершины хорд в соответствии с полученным разбиением массива вершин графа, получаем
Идентификация
вершин хорд
Знак инцидентной
хорды
-
+
+
+
+
γi
Отсюда имеем множество инцидентных данному сечению хорд х1N={+у3, —y10, +z2, + z5, +j2}.
Аналогично можно определить множества инцидентных хорд и для остальных сечений. На рис. 1.42,б ветви дерева отмечены жирными линиями.
Особенность изложенного алгоритма состоит в том, что процесс формирования сокращенного координатного базиса сводится к операциям идентификации и сравнения на массивах ветвей и вершин графа, благодаря чему загрузка оперативной памяти составляет величину, равную примерно 2l ячеек. В то же время для размещения в памяти машины структурной матрицы потребовалось бы υl ячеек, т. е. больше в υ/2 раз. Для сложных схем это соотношение может быть значительным.
