Автооптимизация советника - в поисках алгоритма "Больших Зеленых Пятен" :) - страница 2

 
wmlab:

Если я не ошибаюсь, это алгоритм заливки всех несвязанных областей. Но я не вижу в нем оценки найденной области - бублик считается наравне с кругом, хотя нам подойдет только круг.
Бублик будет стираться не только снаружи, но и изнутри, тогда если есть вторая область - окружность радиусом хотя бы на 1 больше, чем половина толщины бублика, то алгоритм как раз придет к окружности, а бублик сотрет полностью. Хотя, если это идеальный бублик, то для него можно предусмотреть специальный пункт, что такое сразу стирать.
 
alsu:
Если область неправильной формы, то первыми будут убираться элементы на "острых" краях, т.к. у них меньше зеленых соседей. В результате алгоритм стремится сначала привести каждую область к форме окружности, а потом шаг за шагом уменьшает ее радиус, пока не придет к центру.

Вот теперь понял. Мы как бы отсеиваем шум, оставляя только пятна. Но не совсем понятен результат. Связванная область может быть "бубликом" или "толстой змеей", а мы ищем только пятна - подобие овалов или кругов.
 
Вообще я подразумевал, что задача имеет решение. Очевидно случаи, которые приводят к отсутствию решения, надо рассмотреть заранее отдельным порядком.
 
А что если ограничиться поиском максимального по площади "зеленого" прямоугольника? Если склероз не изменяет, вроде есть такой алгоритм? Для каждой точки ищем вправо и вниз прямоугольник из зеленых точек и запоминаем максимальный по площади... Тогда и центр находится тривиально.
 
wmlab:

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

Сам назначил алгоритм заливкой, сам нарвался на бублик, теперь alsu виновен.. :)

Если по алексию - заливка атакует по всем краям сразу, включая дырку от бублика. Прошу подсудимого оправдать.

;)

 
Алгоритм поиска бублика может быть такой: Если существует красная точка, от которой не удается найти путь к краю поля, то эта точка принадлежит дырке бублика.
 
wmlab:
А что если ограничиться поиском максимального по площади "зеленого" прямоугольника? Если склероз не изменяет, вроде есть такой алгоритм?
Можно так: задать минимальное количество шагов алгоритма, например 5. Если алгоритм приходит к центру за меньшее число шагов, то считаем, что найденная область "плохая".это будет включать и "тонкие бублики", и "толстых змей"
 
MetaDriver:

Сам назначил алгоритм заливкой, сам нарвался на бублик, теперь alsu виновен.. :)

Если по алексию - заливка атакует по всем краям сразу, включая дырку от бублика. Прошу подсудимого оправдать.

;)


Оправдаю после мини-тестов, алгоритм интересный :) Пока на руках два метода - заливка и поиск зеленого прямоугольника.
 
wmlab:
А что если ограничиться поиском максимального по площади "зеленого" прямоугольника? Если склероз не изменяет, вроде есть такой алгоритм?

А он весь обязательно зелёный должен быть или красные крапинки разрешаютца? По мне так лучче густо зелёный в редкую крапинку, чем бледно-сплошной.

Кароче - не заморачивайся крапинками, а ищи максимальную интегральную прибыль по фиксированному диаметру окрестности. Не благодари, лучше прибылью потом поделишься. ;)

 
wmlab:

Оправдаю после мини-тестов, алгоритм интересный :) Пока на руках два метода - заливка и поиск зеленого прямоугольника.

Уже три.

Алгоритм:

1. Для каждой точки поля боя суммируем зелень (и вычитаем красноту) в фиксированной окрестности (например прямоугольной).

2. Сортируем.

3. Делаем ставки.

4. Делимся прибылью.

Причина обращения: