Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

1C закрывает с сообщением о нехватке памяти )

1C закрывает с сообщением о нехватке памяти )
Я
   Румата
 
11.07.18 - 06:10
Доброго времени суток. Стоит задача расположить отрезки на временной оси без пересечений.

В строках ТЗ находятся эти самые отрезки, каждая строка - отрезок. Есть колонка ТЗ типа массив в которой находятся все возможные размещения данного отрезка на временной оси.

Захотел создать массив в котором будут все возможные варианты расположения. Простым перебором пытаюсь этот массив заполнить. Всего отрезков 11. У каждого отрезка 10-12 положений. На 5-м отрезке 1С падает и пишет что не хватает памяти ). Может не заполнять массив а просто перебирать и смотреть пересечения ? Как думаете ? Может у вас схожая задача была ?
 
 
   shadow_sw
 
1 - 11.07.18 - 06:14
все с временем рекламы тренируешься? :)
   Румата
 
2 - 11.07.18 - 06:16
(shadow_sw) Ага ) Уже совсем близко конец )
   shadow_sw
 
3 - 11.07.18 - 06:17
по теме - а если сравнивать первый и последний элемент массива, в каждом массиве
   VladZ
 
4 - 11.07.18 - 06:21
(0) " все возможные размещения данного отрезка на временной оси" - зачем их хранить?
   Румата
 
5 - 11.07.18 - 06:22
(shadow_sw) Сори, не понимаю тебя. Для наглядности попробую здесь подробнее описать :

Отрезок состоит из множества точек. Каждая точка в свою очередь строка ТЗ. в ТЗ две колонки "дата" и "Координата Х".

т.е. строки тз одного отрезка записываются так

01.06.2018 | 1
02.06.2018 | 1
03.06.2018 | 1

Это я показал отрезок шириной 1 клетка с 1 по 3 июня 2018 г.
   Румата
 
6 - 11.07.18 - 06:24
(VladZ) Хотел заполнить массив всеми возможными значениями. А потом просто перебирать массив, элементами которого являются ТЗ. Это ТЗ пробовать сворачивать и сравнивать количество строк в ТЗ до свертки и после. Если количество строк не изменилось - значит ни одной повторяющейся точки нет и отрезки не пересекаются.
   VladZ
 
7 - 11.07.18 - 07:01
(6) По-моему, лажа какая-то.
   Зуекщмшср
 
8 - 11.07.18 - 07:07
Нейронную сеть писать надо...
   Cyberhawk
 
9 - 11.07.18 - 07:28
Покажи на картинке
   Румата
 
10 - 11.07.18 - 07:33
 
 Рекламное место пустует
   VladZ
 
11 - 11.07.18 - 07:38
(0) Давай начнем с начала. Для чего это нужно? Это тестовая задача? Или задача, имеющая какое-то практическое значение?
   VladZ
 
12 - 11.07.18 - 07:42
У отрезка есть начало и конец. Эти данные и должны храниться.

Алгоритм проверки:
- берем отрезом
- смотрим, входит ли начало этого отрезка во временной интервал других отрезков.
- смотрим, входил ли конец этого отрезка во временной интервал других отрезков.
- если ни начало, ни конец не входят - все ОК.
- идем дальше, пока не переберем все отрезки.
   Cyberhawk
 
13 - 11.07.18 - 07:44
Покажи сабж на картинке, епта
   VladZ
 
14 - 11.07.18 - 07:46
(13) Картинка в (10)
   Румата
 
15 - 11.07.18 - 07:47
(VladZ) Эта задача практическая. На временной оси отрезками изображены рекламные ролики. Менеджеру звонит очередной клиент и говорит параметры ролика, который он хочет чтобы запустили в эфир. т.е. говорит дату начала и дату окончания проигрывания ролика, а так же периодичность (1 раз в минуту, 1 раз в 2 минуты и т.д) и длину ролика кратную 5-ти секундам. Программа должна автоматически найти свободное место и вставить туда ролик. Если надо, то передвинув по вертикальной оси ролики, которые мешают.
   Румата
 
16 - 11.07.18 - 07:48
Если же ролик нельзя разместить (не удается найти место), то выдать соответствующее предупреждение.
   Румата
 
17 - 11.07.18 - 07:54
Задача усложняется тем, что ролик повторяется, например 1 раз в минуту. На рисунке это видно. Временную ось разбили специально на 10 блоков  - 10 минут (слева от таблицы показан номер блока). Каждый блок - 1 минута. Повтор ролика 1 раз в 2 минуты будет изображен например во 2,4,6,8 и 10 блоке.
   Румата
 
18 - 11.07.18 - 07:57
Ну и продолжительность ролика 5 секунд - 1 клетка по вертикали, 10 секунд - 2 клетки, 15 - 3 и т.д. Поэтому я решил  каждый отрезок хранить в виде координат. Чтобы узнать пересекаются отрезки или нет я просто все координаты всех отрезков сбрасываю в ТЗ с двумя колонками дата и координата по вертикали. Если после свертки ТЗ становится меньше строк - значит пересечения есть.
   Segate
 
19 - 11.07.18 - 08:03
задачу о ранце смотрел? мне кажется можно поиграться с ней и получить довольно приемлимый результат.
   Румата
 
20 - 11.07.18 - 08:04
(VladZ) Я так и хочу перебрать. Роликов может быть максимум 12, т.к. 5 секунд * 12 = 60, а потом идут повторы. у каждого ролика может быть 12 разных положений. Получается 12 ! возможных вариантов ? 479.001.600 ? Или я не прав ?
   Румата
 
21 - 11.07.18 - 08:04
(Segate) Нет, не смотрел.
   Segate
 
22 - 11.07.18 - 08:16
(21) а вообще какую-то теорию по np-полным задачам читал? Ну или в курсе что к чему? Или так, нахрапом, перебором решаешь?
   Румата
 
23 - 11.07.18 - 08:29
(Segate) У меня "ценностей" у вещей нет, каждый отрезок должен попасть в рюкзак (отобразится на графике). )
   dmpl
 
24 - 11.07.18 - 08:31
(0) Тогда будешь ждать до старости. Такие задачи точное решение в разумное время не позволяют получить.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует