Рассчитать общее сопротивление по списку смежности резисторовJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Рассчитать общее сопротивление по списку смежности резисторов

Сообщение Anonymous »

Проблема, которую мне нужно решить, — вычислить общее сопротивление цепи по списку подключенных резисторов (список смежности, если резистор считается узлом).

Например, в следующей схеме:

Изображение


Список будет выглядеть так:

Код: Выделить всё

R1 -> R2
R1 -> R3
R2 -> R4
R3 -> R4
Каждый резистор имеет идентификатор и значение его сопротивления. Кортежи соединений хранятся в структуре с помощью методов getFrom и getTo.

Рекурсивный алгоритм, который я разрабатываю до сих пор, учитывает вычисление общее сопротивление между двумя любыми резисторами:

Код: Выделить всё

private double calculateResistance(Resistor c1, Resistor c2){
double res = 0;
for(ComponentConnection cc : getGraph()){
if(cc.getFrom().getId() == c1.getId()){
if(cc.getTo().getId() == c2.getId())
return c1.getRes() + c2.getRes();
res += (1/calculateResistance(cc.getTo(),c2));
}
}
return c1.getRes() + 1/res;
}
Проблема в том, что при наличии развилки алгоритм не может определить момент завершения и дублирует некоторые компоненты (в примере R4 рассматривается дважды).

Проблема в том, что при наличии развилки в схеме алгоритм не может определить момент завершения и дублирует некоторые компоненты (в примере R4 рассматривается дважды).

Проблема в том, что при наличии развилки в схеме алгоритм не может определить момент завершения и дублирует некоторые компоненты (в примере R4 рассматривается дважды).

Проблема в том, что при наличии развилки в схеме алгоритм не может определить момент завершения и дублирует некоторые компоненты (в примере R4 рассматривается дважды).

p>

Есть идеи, как это исправить или решить проблему другим подходом?

Подробнее здесь: https://stackoverflow.com/questions/374 ... cency-list
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»