Разложение к выпуклым полигонам

Вы пытаетесь вычесть ссылки типа Object.

Ваш тип элемента должен реализовать Comparable:

public class ListElement<T extends Comparable<T>> implements Comparable<ListElement<T>> {
    public T wert;
    public ListElement<T> nachFolger;

    public ListElement(T wert, ListElement<T> nachFolger) {
        this.wert=wert;
        this.nachFolger=nachFolger;
    }

    @Override
    public int compareTo(ListElement<T> a) {
        return wert.compareTo(a.wert);
    }
}
13
задан mpen 18 August 2015 в 15:46
поделиться

4 ответа

Я полагаю, что регулярные пять указали, что звезда (например, с чередованием точек, имеющих коллинеарные сегменты), является контрпримером, который Вы ищете.

Редактирование в ответ на комментарии

В свете моего пересмотренного понимания, пересмотренного ответа: попробуйте звезду острых пяти, на которую указывают (например, один руками, достаточно узкими, что только три точки, включающие руку напротив отраженной точки, Вы продолжаете работать, в диапазоне, рассмотренном "хорошие отраженные вопросы"). По крайней мере, рабочий через него на бумаге он, кажется, дает больше, чем оптимальное. Однако заключительное чтение Вашего кода имеет меня удивление: под чем Вы подразумеваете "самый близкий" (т.е. самый близкий к какой)?

Примечание:

Даже при том, что мой ответ был принят, это не встречный пример, мы первоначально думали. Как @Mark указывает в комментариях, он идет от четыре до пять в точно то же время, как оптимальное делает.

Триггер, вьетнамка

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

Я получаю это:

удаление мертвой ссылки ImageShack

Когда оптимальное является этим:

удаление мертвой ссылки ImageShack

2
ответ дан 2 December 2019 в 02:05
поделиться

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

Для разъединения между Вашим и оптимальным алгоритмом мы должны использовать тот разрыв путем поиска форм с близкими вершинами, которые разложились бы плохо. Например (игнорируют строки, я нашел это на intertubenet):

вогнутый полигон, который формирует G или U, формирует http://avocado-cad.wiki.sourceforge.net/space/showimage/2007-03-19_-_convexize.png

У Вас нет защиты от наиболее центральной точки, соединяемой через вогнутый 'разрыв', который является внешним к полигону.

Ваш алгоритм также довольно сложен, и может переусердствовать его - точно так же, как сложный код, можно найти ошибки в нем, потому что сложный код делает сложные предположения.

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

В предположении что-то как:

  1. разложитесь на треугольники
  2. недетерминировано генерируйте много рекомбинаций
  3. вычислите метрику качества (количество уловок)
  4. выберите лучший x % рекомбинаций
  5. частично анализируйте каждое использование треугольники и генерируйте новый набор рекомбинаций
  6. повторитесь от 4, пока некоторая мера сходимости не будет достигнута
2
ответ дан 2 December 2019 в 02:05
поделиться

но вершине 5 нужно дать предпочтение, потому что 9 в диапазоне, данном 4-5 и 6-5

Что Вы сделали бы, если бы 4-5 и 6-5 были еще более выпуклыми так, чтобы 9 не лежал в их диапазоне? Затем по Вашим правилам правильный поступок состоял бы в том, чтобы соединиться 9 - 12, потому что 12 самая близкая отраженная вершина, которая была бы субоптимальной.

1
ответ дан 2 December 2019 в 02:05
поделиться

Нашли его :( Они на самом деле довольно очевидны.


* dead imageshack img *

Четырехлистный клевер не будет оптимальным, если разрешены точки Штейнера ... красные вершины могли быть связаны.


* dead imageshack img *

Это даже не будет оптимальным без очков Штейнера ... 5 можно подключить к 14, избавляя от необходимости 3-14, 3-12 и 5-12. два полигона лучше! Ой!

0
ответ дан 2 December 2019 в 02:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: