Предположим, что у меня есть два или более массивов/списков, содержащих одни и те же элементы, но с другим порядком.Определить разницу между порядком массивов
MyClass[] array1 = new MyClass[] {obj1, obj2, obj3, obj4};
MyClass[] array2 = new MyClass[] {obj1, obj4, obj2, obj3};
Мне нужен алгоритм для сравнения и вычисление разности порядка элементов в массивах, что-то вроде:
double likeness = ArraysOrderComparator.compare(array1, array2);
Я думаю, что есть разные способы сделать это. В принципе, я хочу определить метрику для сравнения порядка разных массивов. Держу пари некоторые алгоритмы, которые уже существуют, может кто-нибудь подскажет мне? Мне нужно реализовать его в Java-коде.
Определите «разницу в заказе». Например, что бы вы ожидали, что «подобие» будет равным? –
Существует определенно несколько способов сравнения заказов, но правильное решение, вероятно, потребует лучшего понимания того, для чего будет использоваться сравнение. Основная идея может заключаться в том, чтобы упростить так, чтобы ваши массивы были фактически просто строками, вы могли бы использовать любой алгоритм разложения строк (например, расстояние от хамминга). Я предполагаю, что в вашем случае ('1234', '1423') будет менее похожим, чем сказать ('1234', '1243') – RudolphEst
На самом деле мне нужно исследовать различные способы, которыми я могу вычислить «подобие», поэтому мне бы хотелось иметь ключевые слова для google некоторые теории об этом! Для моей цели я должен уделять больше внимания относительной разнице заказов, а не абсолютного порядка («1234» должен быть больше похож на «1423», чем на «1432») – blian