Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> php, нестандартная непонятная задача, "эффективный процесс" 
:(
    Опции темы
NFL
  Дата 30.11.2009, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Задали написать программу или веб-приложение, решающее следующую задачу (скрин): 
user posted image
Реально ли уложиться в условие - время выполнение 10 сек? 
Язык - желательно php, поэтому здесь и пишу... Однако, возможно и на С/С++
Натолкните на идею, если такую задачу можно решить  smile  smile 
PM MAIL   Вверх
NLspieler
Дата 30.11.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Если переведешь на русский, то наверняка появятся куча советов, как решить задачу
PM MAIL   Вверх
NFL
Дата 30.11.2009, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Задача М. Эффективный процесс.

В однм из химических производств процесс производства вещества состоит из повторяемых циклов-процессов. Процесс состоит из 8 подпроцессов, которые имеют номера 1-8. Процессы должны быть запущены по одному, не ранее чем через один интервал времени Т. Подпроцессы имеют различную длительность, возможности совмещения во времени. условия запуска, согласно таблицы (на скрине)
Эффективность процесса оцениваем показателем эффективности, который рассчитываем как разность между показателем качества вещества, который без нарушения условий равен 8, а каждое нарушение условий отнимает 1.5 и показателем длительности процесса, который равен длительности подпроцесса в количестве интервалов Т, деленной на 5. Программа должна напечатать 2 лучших последовательности номеров подпроцессов и их показатели .

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

что обозначают условия запуска подпроцесса: если, например, стоит условие "-5", то это значит что подпроцесс должен быть запущен перед подпроцессом №5, а положительное число - подпроцесс должен быть запущен после подпроцесса с указанным номером.
PM MAIL   Вверх
awdev
Дата 1.12.2009, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 22.11.2009

Репутация: 1
Всего: 1



Воник вопрос, запускаем мы 6й процесс который совместим с 3м.

На втором шаге мы запускаем 3й процесс, который совместим с 6.

На третем шаге что? Другие процессы не совместимы? Ждем ?

Если ждем, тогда о каких нарушениях идет речь в условиях? Если не ждем, то нарушаем процесс ? или как?


PM MAIL   Вверх
NFL
Дата 1.12.2009, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



awdev, 
условия: (-8) - процесс должен быть запущен после 8-го, (5) - перед 5-м. 

На совместимость можно забить, проверял вручную, что с ней, что без нее, результаты те же. то есть, суть в том, чтобы выбрать все числа из диапазона 12345678-88888888, в которых нет нарушения условий совместимости, и потом  с ними уже посчитать показатель эффективности...
но перебор банальным for($i=12345678; $i<88888889;$i++){}
это зло, в 10 сек не уложится ни за что...
PM MAIL   Вверх
Simpliest
Дата 1.12.2009, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3



NFL, 
у тебя 8! перестановок с учетом ограничений еще меньше.
Цикл тебе нужен по перестановкам. И 40к комбинаций уложить в 10с более чем реально



--------------------
user posted image
PM   Вверх
NFL
Дата 1.12.2009, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Simpliest, пример можно? smile что то туплю...
PM MAIL   Вверх
Simpliest
Дата 1.12.2009, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3



12345678
21345678
23145678
...
87654321


--------------------
user posted image
PM   Вверх
NFL
Дата 1.12.2009, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



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


PM MAIL   Вверх
sTa1kEr
Дата 2.12.2009, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Не совсем ясны условия задачи.
1. То что подпроцессы могут быть совмещены по времени - это означает, что совместимые подпроцессы могут быть запущены одновременно (т.е. суммарное время их выполнения всегда равно max(T1, T2))? Или же все-таки учитывается  условие, что подпроцесс может быть запущен не ранее чем через 1 ед. времени (т.е. суммарное время max(T1,T2+1) или max(T2,T1+1) в зависимости от порядка)?
2. Условие запуска означает, что подпроцесс должен быть выполнен непосредственно перед/после указанного подпроцесса? Или же между ними могут быть выполнены другие подпроцессы без нарушения условия процесса?
3. Могут ли быть взаимнопротиворечащие друг другу условия? Т.е. когда в принципе невозможно завершить процесс без нарушения хотя бы одного условия?
4. Пример в задаче какой-то совсем абсурдный, даже если исправить опечатки и предположить, что взаимнопротиворечащие условия возможны, то все равно как не крути, но эффективность 3.4 для первой строки и 3.3 для второй ну никак не получается.

Цитата(Simpliest @  1.12.2009,  10:24 Найти цитируемый пост)
Цикл тебе нужен по перестановкам

Это не интересно smile 

Цитата(Simpliest @  1.12.2009,  10:24 Найти цитируемый пост)
И 40к комбинаций уложить в 10с более чем реально

Я думаю, что тут суть не в том, что бы уложить решение задачи во времени в 10с, а в том, что бы найти более оптимальный алгоритм, нежели полный перебор всех возможных вариантов.

Это сообщение отредактировал(а) sTa1kEr - 2.12.2009, 00:57
PM MAIL   Вверх
NFL
Дата 2.12.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



sTa1kEr, 

1.  max(T1,T2+1) или max(T2,T1+1
2. Нет. Главное, чтобы именно перед или после.
3. Нет
4. Ну у меня 3.4 получилось, а 3.3 тоже никак(

Ну да это не важно, что там в примере, главное чтоб хоть как то считал... Хотя бы саму идею в коде, ибо я вообще в шоке от задачи(=)
PM MAIL   Вверх
Simpliest
Дата 2.12.2009, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3



NFL, 
Найти все комбинации

Добавлено через 1 минуту и 58 секунд
Цитата(sTa1kEr @  1.12.2009,  23:30 Найти цитируемый пост)
что бы найти более оптимальный алгоритм, нежели полный перебор всех возможных вариантов.

Не прикалывайся. 
Я за свою недолгую жизнь не смог придумать ни одного нового алгоритма. Максимум заново открывал уже существующие.


--------------------
user posted image
PM   Вверх
sTa1kEr
Дата 2.12.2009, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(Simpliest @  2.12.2009,  14:11 Найти цитируемый пост)
Я за свою недолгую жизнь не смог придумать ни одного нового алгоритма. Максимум заново открывал уже существующие. 

Не важно, придумаешь ли ты новый алгоритм, или найдешь готовый, главное что бы он был наиболее оптимальным для конкретной задачи. Или ты считаешь метод перебора всех возможных комбинация самым оптимальным для данной задачи?

Добавлено через 2 минуты и 26 секунд
Цитата(NFL @  2.12.2009,  13:55 Найти цитируемый пост)
2. Нет. Главное, чтобы именно перед или после.

Это сильно упрощает задачу, но тогда пример в задаче совершенно не корректен.
PM MAIL   Вверх
Simpliest
Дата 3.12.2009, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3



Цитата(sTa1kEr @  2.12.2009,  20:37 Найти цитируемый пост)
Или ты считаешь метод перебора всех возможных комбинация самым оптимальным для данной задачи?

Не всех возможных, а всех разрешеных.

Но, да.
Для задачи "найти оптимальный вариант из всех комбинаций", полный перебор будет единственным вариантом.


--------------------
user posted image
PM   Вверх
sTa1kEr
Дата 3.12.2009, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(Simpliest @  3.12.2009,  07:49 Найти цитируемый пост)
Не всех возможных, а всех разрешеных.

Разрешены абсолютно все комбинации.

Цитата(Simpliest @  3.12.2009,  07:49 Найти цитируемый пост)
Для задачи "найти оптимальный вариант из всех комбинаций", полный перебор будет единственным вариантом.

Да неужели? Я уже вижу как можно решить задачу с перебором в лучшем случае только двух вариантов smile 

Это сообщение отредактировал(а) sTa1kEr - 3.12.2009, 07:26
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0701 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.