ЗАДАЧИ
problems.ru
О проекте | Об авторах | Справочник
Каталог по темам | по источникам |
К задаче N

Проект МЦНМО
при участии
школы 57
Задача 102900
Тема:    [ Линейная алгебра ]
Сложность: 3+
Классы:
Название задачи: Сопротивление .
В корзину
Прислать комментарий

Условие

Задана электрическая схема из некоторого количества узлов и N резисторов, их соединяющих. Напишите программу, вычисляющую сопротивление между двумя заданными узлами A и B этой схемы. Допускается частичное решение задачи для случая параллельно-последовательных схем.

Пояснения для тех, кто плохо учил в школе физику:
    1. Сила тока равна напряжению, поделенному на сопротивление: I = U / R.
    2. Сумма токов, втекающих в узел, равна сумме токов, вытекающих из него.
    3. Сумма падений напряжений I · R на отдельных участках произвольного замкнутого контура равна сумме всех ЭДС в этом контуре.

Как следствие, получаем следующие формулы:
    1. При последовательном соединении резисторов с сопротивлениями R1 и R2 общее сопротивление R вычисляется по формуле R = R1 + R2;
    2. При параллельном соединении резисторов с сопротивлениями R1 и R2 общее сопротивление R вычисляется по формуле 1 / R = 1 / R1 + 1 / R2.

Входные данные

В первой строке входного файла содержится целое число N – количество резисторов в схеме (1 ≤ N ≤ 50). Во второй строке записаны номера узлов A и B (узлы нумеруются начиная с 1). Каждая из следующих N строк содержит описание очередного резистора в виде тройки целых чисел из диапазона [0, 32767], записанных через пробел. Первые два числа задают номера двух различных узлов схемы, которые этот резистор соединяет, а третье – его сопротивление. Между двумя узлами схемы могут располагаться несколько резисторов.

Выходные данные

Выведите в выходной файл искомое сопротивление не менее чем с 6 верными значащими цифрами.

Пример входного файла

4
1 2
1 3 1
3 4 1
4 3 1
2 4 1

Пример выходного файла

2.50

Решение

Скачать архив тестов и решений

К заданному в условии задачи мультиграфу дополнительно добавим ребро от A к B, на котором располагается источник ЭДС. Для каждого ребра заведем неизвестную, равную току, протекающему по этому ребру в каком-то фиксированном направлении. Используем теперь алгоритм нахождения фундаментального множества циклов в графе [Липский 88, п. 2.5]. Для каждого построенного цикла выпишем в виде уравнения на введенные неизвестные закон Кирхгофа для напряжений, указанный в условии задачи. (Ясно, что уравнения для всех остальных циклов будут линейными комбинациями выписанных.) Кроме того, для каждого узла можно записать уравнение равенства сумм токов, втекающих и вытекающих из него. Такое уравнение нужно записать для всех узлов схемы, кроме любого одного (докажите, что уравнение для него равно сумме предыдущих с обратным знаком). Полученную систему из N+1 линейного уравнения на N+1 неизвестную решаем, например, методом Гаусса. 

Упражнения

1. Докажите, что общее количество построенных уравнений (т.е. количество циклов в фундаментальном множестве циклов плюс количество узлов в схеме) равняется N+1.
2. Докажите, что полученная система линейных уравнений является невырожденной, т.е. будет иметь единственное решение.

Источники и прецеденты использования

книга
предмет информатика
Автор Беров В., Лапунов А., Матюхин В., Пономарев А.
Название Особенности национальных задач по информатике
Издательство Триада-С
Год издания 2000
глава
Номер 3
Название Алгоритмы на графах
Задача
Номер 17

© 2004-... МЦНМО (о копирайте)
Пишите нам

Проект осуществляется при поддержке Департамента образования г.Москвы и ФЦП "Кадры" .