Форум программистов, компьютерный форум CyberForum.ru

Объясните смысл задачи "3 конвейера" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача:Ряд суммы http://www.cyberforum.ru/cpp-beginners/thread956438.html
В общем в задании сказано что при проверке разница cos(X) ,с моей функцией будет не более eps. Однако у меня при выводе погрешность больше eps. Просьба помочь найти ошибку или объяснить почему так выводит?Не надо пинать на алгоритм решения. Задача: Определение: вычислить бесконечную сумму с точностью ε означает выполнять суммирование, пока выполнено условие |an| > ε. Дано вещественное...
C++ Хочу постичь дзен, необходима консультация В массиве целых чисел найти непрерывный подмассив, сумма элементов которого максимальна. Необходимо вывести получившуюся сумму и два индекса - номера начального и конечного элементов массива. Все элементы пронумерованы попорядку, начиная с 0. (это условие) Объясните пожалуйста как работает сам поиск? Если есть возможность добавьте комментарии пожалуйста. Сам текст программы. #include... http://www.cyberforum.ru/cpp-beginners/thread956437.html
C++ Создать класс прямоугольников
Помогите, пожалуйста, а то я дуб дубом:( Создайте класс прямоугольников, описав в нём все необходимые свойства, подобрав им понятные имена и правильные типы данных. Опишите в классе конструктор, позволяющий при создании нового объекта явно задать все его свойства. Если это необходимо, то проверьте допустимость их значений в конструкторе (например, в классе обыкновенных дробей нельзя создавать...
Что это в коде?не сображу C++
Доброго дня!! Подскажите пожалуста, разясните что это за две строки в коде? Я еще е очень освоился с темой, и ак-то не пойму, что это. Строки три-четыре и 42. И напомните пожалуста, что значит enum? intintboolfalsetrue это что за выраженьице? Листинг. Итоги первой недели 1: #include <iostream.h> 2: intintboolfalsetrue 3: enum CHOICE { DrawRect = 1, GetArea,
C++ Lua и C++. Как наследовать классы? http://www.cyberforum.ru/cpp-beginners/thread956410.html
Возможно ли в Lua наследовать классы из C++ кода? И вообще что лучше использовать для связки C++ и Lua?
C++ G++/Gcc передача define в аргументах Можно ли каким-то ключом gcc/g++ создать define-переменную? Т.е. можно-ли сделать так: g++ -<ключь> <название define переменной> <значение> src/dosomthing.cpp -o bin/exout и если да то каким ключом? подробнее

Показать сообщение отдельно
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
17.09.2013, 19:01     Объясните смысл задачи "3 конвейера"
Действительно, не самая простая задача. На мой взгляд, здесь уместна будет несложная динамика. Или мат. моделирование.
Вкратце:
Момент времени Tb (begin):
Код
t3 t2 t1 -> [             ] -> [             ] -> [             ] -> .
И в момент времени Tb + 1:
Код
t3 t2     -> [ t1         ] -> [             ] -> [             ] -> .
Здесь всё понятно и просто.
Но начинается жара примерно здесь:
Код
t3         -> [ t2          ] -> [            ] -> [ t1          ] -> .
Другими словами - всё плохо, так как второй конвейр простаивает, тогда как первый и третий загружены. А время идёт.
Мат. моделирование простое, если числа дискретны (на самом деле, любые числа в компе дискретны, но...), то есть целочисленны, или можно домножить на не очень большое число и получить integer (хотя можно сделать немного магии и из любого дробного сделать int, но там компьютер может и не успеть).
Поэтому лучше использовать динамику. Как вариант - оценить время сверху и дальше поэтапно подобными же методами улучшать.
Небольшая эвристика пришла в голову, пока доказать не могу, но возможно рабочая: берём для каждой детали максимальное время обработки, и складываем их. Почему? На мой взгляд, ясно, что каждый конвейр должен обработать каждую деталь, соответственно, это и есть узкое горлышко. Правда я сейчас почему-то сильно сомневаюсь: возможно есть какие-то граничные случаи и это не есть оценка с верху. И улучшать довольно сложно.

Ещё как вариант, можно сделать три очереди - каждая очередь конвейр (ну по сути, это и есть мат. моделирование). И проталкивать детали. При этом каждый конвейр приплюсовывает себе время обработки этой детали и время ожидания (какая-нибудь умная разность между временем обработки текущей детали и детали с предыдущего конвейра, например:
Код
Tfull ( Ci, ti ) =  T ( Ci, ti ) + max ( T ( Ci-1, ti+1 ) - T ( Ci, ti ), 0 )
За правильность формулы не ручаюсь, сейчас пытался спроецировать задачу в голове. Возможна фатальная ошибка. Но даже если она внезапно-чудесным образом оказалась верна, лично мне не совсем понятно, как это программировать. Это сообщение я пишу уже где-то час. Это очень много для спортивного программирования (десяток задач на пять часов, то есть задача в пол часа - очень быстро, даже слишком).
 
Текущее время: 02:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru