Идеи реализации

Электрическая схема, составленная из резисторов, в сущности, является неориентированным графом, в котором резисторы служат в качестве рёбер, а их соединения — в качестве вершин (о графах мы упоминали в главе 36. «Близость последовательностей»). Графы — чрезвычайно важные в информатике объекты, и для них имеются несколько популярных методов представления в памяти компьютера. Один из таких методов заключается в представлении графа как списка его рёбер. Каждое ребро можно задать как пару вершин, им соединяемых. Если пронумеровать каким-то образом вершины, ребро можно задать как пару номеров вершин. Порядок вершин в паре задаёт ориентацию (направление) ребра, так что этот способ хорошо подходит для описания ориентированных графов. В нашем случае можно никак не учитывать ориентацию рёбер.

Не будем забывать, что каждый резистор, и, следовательно, каждое ребро несёт дополнительную информацию — величину сопротивления. Графы, в которых к рёбрам или вершинам идут в нагрузку какие-то дополнительные величины, называются нагруженными. С учётом этого схему можно описать как перечень рёбер, которые, в свою очередь, представляются как три числа. Первые два — это номера вершин, а третье — сопротивление ребра.

Поскольку в Perl списки очень удобно представлять в виде массивов, в которых элементы нумеруются начиная с нуля, будет удобно точно так же нумеровать и резисторы, и узлы. Если раньше мы начинали нумерацию с единицы, то теперь просто уменьшим каждый номер на единицу.

Описывая схему, нужно каким-то образом указать, между какими именно узлами требуется вычислить сопротивление. Поэтому примем дополнительное соглашение, по которому входной и выходной узлы всегда получают номера 0 и 1. С учётом перенумерации схема на рисунке 50.6. «Разметка схемы» приобретает вид

Рисунок 50.7. Разметка схемы после перенумерации

Если в каждой строке текстового файла разместить по три разделённых пробелами числа, тогда для схемы на рисунке 50.7. «Разметка схемы после перенумерации» получится такой файл:

0	2	1
0	3	1
1	2	1
1	3	1
2	3	1

(здесь мы взяли все пять одинаковых единичных сопротивлений). Между прочим, если в этой схеме все сопротивления одинаковы, рассчитать её нетрудно в уме. Нужно заметить, что в силу симметрии схемы относительно оси, проходящей через входной и выходной узлы, ток через резистор R 2 (мостик между узлами U 2 и U 3 ) не потечёт. Тогда резистор за ненадобностью можно изъять из схемы, и получится параллельное соединение двух последовательных соединений — R 0 + R 3 = 2 и R 1 + R 4 = 2 . В итоге получаем 2 2 2 + 2 = 1 , так что схема оказывается эквивалентной одному единичному резистору.

Приведём также описания схем из двух последовательно и параллельно соединённых резисторов:

Информатика-54© А. Н. Швец