Да там к конечным рядам все должно сводиться по идее. Поиск в ширину, наверное, неплох, да... если по памяти ограничений нет. Я бы все-таки предрасчитал пары-тройки номиналов, честно...
Madf писал(а):в андроид маркете есть готовые приложения (наша и забугорная)
Два резистора я и на калькуляторе посчитаю. И как мне эти программы в свою запихивать?
Проект [[Open Robotics]] - универсальные модули для построения роботов Модули Open Robotics можно приобрести в магазине shop.roboforum.ru Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!
Michael_K писал(а):Да там к конечным рядам все должно сводиться по идее. Поиск в ширину, наверное, неплох, да... если по памяти ограничений нет. Я бы все-таки предрасчитал пары-тройки номиналов, честно...
>>> ================================ RESTART ================================ >>> Please enter target resistance: 45676.7 num expanded: 9 Solution: 45676.6 , resistors used: (1.0, 43000.0, 2400.0, 270.0, 5.6) Error is: 0.0999999999985 (0.000219%) >>> ================================ RESTART ================================ >>> Please enter target resistance: 34534534.456 num expanded: 27 Solution: 34534534.4 , resistors used: (1.0, 9100000.0, 9100000.0, 9100000.0, 6800000.0, 430000.0, 4300.0, 220.00000000000003, 11.0, 2.4) Error is: 0.0560000017285 (0.000000%) >>>
Добавлено спустя 58 секунд:
blindman писал(а):dccharacter, Не, такие гирлянды никуда не годятся
Они очень даже годятся. Под бесконечные ряды элементарно модифицируется.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Ну когда модифицируется, тогда и можно разговаривать.
Проект [[Open Robotics]] - универсальные модули для построения роботов Модули Open Robotics можно приобрести в магазине shop.roboforum.ru Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!
blindman писал(а):Ну когда модифицируется, тогда и можно разговаривать.
ну а раз сейчас нельзя, тогда, конечно, перебором. Вот радует меня: давайте придумаем какую-нибудь космическую задачу, спросим как ее решать, получим ответ, а потом будет долго рассказывать, какой это ответ неправильный.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Все равно не понятно. Алгоритм попробовал всего 27 цепочек? Или ветвей от корня? Или вообще ветвей - и от корня, и промежуточных? Или чего-то еще... что вы называете "итерацией"?
Вы сейчас говорите ничуть не лучше, чем у вас в подписи
Добавлено спустя 6 минут 35 секунд: Вы, видимо, не понимаете, чего блайндман хочет. Он хочет быстрый алгоритм... Не просто быстрый, а супер-пупер-быстрый... Ну, там, в гугль или в какой-нибудь самсунг на конкурс.
Там любят такие задачки задавать. Типа, проанализировать дофигаллиард чисел на простоту. Кто сделает быстрее, того возьмем дворником...
Последний раз редактировалось Michael_K 20 мар 2013, 01:24, всего редактировалось 2 раз(а).
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Проект [[Open Robotics]] - универсальные модули для построения роботов Модули Open Robotics можно приобрести в магазине shop.roboforum.ru Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!
К сожалению, я не уверен, что решение верное, так как не могу доказать, что эвристика верная (это необходимо, чтобы гарантировать оптимальное решение). Я уже на это напоролся, мое предыдущее решение давало ответ из восьми резисторов, когда надо было копать дальше и искать цепь из семи резисторов. Ладно, хоть не скучно было.
Добавлено спустя 3 минуты 30 секунд: Вот для теста:
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Понятно. Когда мне надо найти решение, я отправляю вам исходные данные, а вы публикуете ответ
Проект [[Open Robotics]] - универсальные модули для построения роботов Модули Open Robotics можно приобрести в магазине shop.roboforum.ru Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!
По-моему, во-первых, всегда достижима абсолютная точность. (ряд резисторов бесконечный, а точность мантиссы ограничена). Откуда в последнем, например, "тесте" взялось 9.1, если 6.18368996675e+13 - кончается вообще на два нуля ??? Еще и ошибка какая-то осталась!
Во-вторых, по-моему, имеет смысл выкинуть плавающую точку нафиг. Считать только мантиссу в целых чмслах или даже как строку. Так увеличится скорость, не будет потерь точности и не нужно будет делать всякие "финты ушами".
В-третьих, я почти убежден, что считать можно последовательно-поразрядно. Например, в ряду 1,2,3,...,99,100 все значения набираются из одного или двух резисторов из ряда E24, кроме значения 96 - для него надо три резистора. До тысячи - ни одной четверки не попадается!
То есть по предрасчитанной коротенькой табличке мы сразу можем откинуть два-три старших разряда мантиссы. Без поиска вообще!
Я бы рассматривал число, грубо говоря, как строку, которую надо разбить на подстроки с известными весами из словаря-алфавита. Это даст очень быстрый, абсолютно точный, и близкий к оптимальному результат. Я почти уверен, что исключения будут, но их будет немного и их можно тупо изначально зашить.
Michael_K писал(а):То есть по предрасчитанной коротенькой табличке мы сразу можем откинуть два-три старших разряда мантиссы. Без поиска вообще!
Без гарантий, что в итоге получим оптимальное решение
Проект [[Open Robotics]] - универсальные модули для построения роботов Модули Open Robotics можно приобрести в магазине shop.roboforum.ru Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!
Какой цепочки? Резисторов? Это не так. Я же только что показал, что при ограниченной мантиссе требуемого резистора число резисторов ряда E24 тоже ограничено. Берем первую цифру мантиссы - заменяем набором резисторов (одним или двумя), берем вторую и т.п.
Или у вас заданное сопротивление это бесконечная дробь? Или вообще иррациональное? Тогда тем более поразрядно надо считать! Оно (заданное сопротивление) откуда вообще берется?
blindman писал(а):
...сразу можем откинуть два-три старших разряда мантиссы. Без поиска вообще!
Без гарантий, что в итоге получим оптимальное решение
Да, без гарантий. Но уже для троек шансы очень неплохие - вероятность можно прикинуть. Причем считаются они в лоб элементарно, и этот словарь можно использовать повторно, если (вдруг) надо построить много цепочек резисторов. Даже если продолжать перебором, то такая оценка глубины - хорошее ограничение, для сужения поиска.
А можно ссылку на оригинальную задачу? (в личку можно)...
Это и есть оригинальная задача. В гугл меня дворником не возьмут, да я и не стремлюсь.
Michael_K писал(а):Я же только что показал, что при ограниченной мантиссе требуемого резистора число резисторов ряда E24 тоже ограничено
Одно из условий - N задано. Решение должно содержать не более N элементов.
Проект [[Open Robotics]] - универсальные модули для построения роботов Модули Open Robotics можно приобрести в магазине shop.roboforum.ru Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!