>Java >java지도 시간 >Java에서 여러 세트의 데카르트 곱을 효율적으로 계산하려면 어떻게 해야 합니까?

Java에서 여러 세트의 데카르트 곱을 효율적으로 계산하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-06 17:13:12912검색

How Can I Efficiently Compute the Cartesian Product of Multiple Sets in Java?

여러 세트에 대한 효율적인 데카르트 곱 계산

여러 세트의 데카르트 곱을 구하는 것은 프로그래밍에 유용한 작업이 될 수 있습니다. 여기에는 입력 세트에서 가능한 모든 요소 조합을 포함하는 새 세트를 생성하는 작업이 포함됩니다. Java에는 이 작업을 용이하게 할 수 있는 몇 가지 라이브러리가 있습니다.

임의의 세트 수에 대한 재귀 솔루션

그러나 세트 수가 동적으로 변하는 경우 재귀 솔루션을 구현할 수 있습니다.

public static Set<Set<Object>> cartesianProduct(Set<?>... sets) {
    if (sets.length < 2)
        throw new IllegalArgumentException("Product requires at least two sets (got " + sets.length + ")");

    return _cartesianProduct(0, sets);
}

private static Set<Set<Object>> _cartesianProduct(int index, Set<?>... sets) {
    Set<Set<Object>> ret = new HashSet<>();
    if (index == sets.length) {
        ret.add(new HashSet<>());
    } else {
        for (Object obj : sets[index]) {
            for (Set<Object> set : _cartesianProduct(index + 1, sets)) {
                set.add(obj);
                ret.add(set);
            }
        }
    }
    return ret;
}

이 재귀 함수는 일련의 집합을 입력으로 사용하여 반복적으로 수행합니다. 각 세트의 요소를 결합하여 데카르트 곱을 형성합니다. 이 솔루션은 Java의 제한으로 인해 일반 유형 정보를 보존할 수 없습니다.

위 내용은 Java에서 여러 세트의 데카르트 곱을 효율적으로 계산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.