2012-04-04 5 views
7

나는 내 교과 과정에 약간의 모호한 질문을 받았다.세트에 중복 된 요소가있을 수 있습니까?

The array of strings is regarded as a set, i.e. unordered. 

이 배열에서 복제본을 제거해야하는지 확실하지 않습니다.

나는 인터넷 검색을 시도했지만 한 곳에서 나에게 다른 것을 알려줄 것입니다. 어떤 도움을 주시면 감사하겠습니다.

세트 (수학)에서 위키
+2

당신이 검색 한 참조는 무엇입니까? 세트 요소가 중복 될 수 있다고 말하는 사람들을보고 싶습니까? –

+0

집합 구현은 더미 값을 사용하는 해시와 거의 유사하기 때문에 해시 또는 사전 키와 마찬가지로 중복 집합을 가질 수 없습니다. –

답변

6

A = {1,2,2,3,4,5,6,7, ...} 및 B = {1,2,3,4,5,6,7, ...} 그러면 A의 모든 요소는 B에 있고 B의 요소는 A ==> A에 B가 들어 있고 B에는 A ==> A = B가 들어 있습니다. 물론 집합에는 중복 요소가있을 수 있습니다. 중복 요소가있는 요소는 중복 요소가없는 요소와 완전히 동일하게됩니다.

+2

설정 선언을 설정 데이터 구조와 혼동하고 있습니다. 선언은 중복을 가질 수 있지만 구조 자체는 가질 수 없습니다. –

25

세트는 잘 정의 된 별개의 개체의 컬렉션입니다.

아마 혼돈은 요소가 표시되는 방식에 의존하지 않는다는 사실에서 비롯된 것 같습니다. 집합의 요소가 반복적으로 또는 재 배열 된 경우 집합은 동일하게 유지됩니다.

마찬가지로 프로그래밍 언어에서는 요소가 이미 해당 요소에 속해 있으면 요소를 집합에 넣지 않거나 이미 있으면 요소를 대체하지만 중복을 허용하지는 않습니다.

프로그래밍 언어의 예

나 다른 프로그래밍 언어의 몇 가지 예를 제공하겠습니다.

파이썬

에서 파이썬 세트로서 정의된다 "고유 요소들의 순서화 컬렉션". 그리고 a = {1,2,2,3,4}과 같은 집합을 선언하면 집합에 한 번만 2이 추가됩니다.

print(a)을 입력하면 {1,2,3,4}이 출력됩니다.

하스켈 세트의 삽입 작업은 다음과 같이 정의된다 하스켈

는 : 세트가 이미 지정된 값과 같은 요소를 포함하는 경우 "[...], 는 새로운 값으로을 대체 . "

마찬가지로 이렇게하면 : let a = fromList([1,2,2,3,4]), 주 출력에 a을 인쇄하면 [1,2,3,4]이 렌더링됩니다.

자바는 자바 세트에서

는 다음과 같이 정의됩니다. "중복 요소가없는 모음". 그 추가 조작은 다음과 같이 정의됩니다. "아직 존재하지 않으면 지정된 요소를이 세트에 추가합니다 [...]이 세트에 이미 요소가 포함되어 있으면 콜은 세트를 변경되지 않고"으로 남겨 둡니다.

Set<Integer> myInts = new HashSet<>(asList(1,2,2,3,4)); 
System.out.println(myInts); 

이 코드, 다른 예에서와 같이, [1,2,3,4]을 OUPUT 것이다.

+0

아, 감사합니다. 내가 그들을 제거하거나 주문을 변경하면 상관 없습니다. – dev6546

+0

요점은 요소가 집합에 속한 횟수를 결정하는 집합의 수학적 속성이 없다는 것입니다. 만약 당신이 A = {1,2,2,3,4}이라면, 집합에 몇 번이나 출현 하였는지에 관계없이 2 ∈ A와 답이 '예'라고 질문 할 수 있습니다. –

+0

@ 루이스 : 요점은 세트가 무엇이든지 주문하는 것을 암시하지 않는다는 것입니다. 따라서 질문조차 있어서는 안됩니다. 물론, 세트의 구현은 삽입 순서대로 모든 것을 유지하지만 세트의 정의에는 정의되어 있지 않을 수 있습니다. 집합의 올바른 구현은 추가하려는 항목을 단순히 추가하는 것이 될 수 있지만, 어떤 항목을 물어 보면 모든 값 (즉, 고유 값) 만 반환합니다. –

2

세트는 단순한 정의로 중복 요소를 가질 수 없습니다. 중복 요소들을 허용하는 정확한 구조 Multiset or Bag이다

에서 수학

하는 MULTISET (또는 가방) 세트 달리 MULTISET의 요소의 여러 인스턴스를 허용 한 세트의 개념을 일반화한다. 예를 들어, {a, a, b}와 {a, b}는 동일한 세트 임에도 불구하고 다른 다중 세트입니다. 그러나 순서는 중요하지 않으므로 {a, a, b}와 {a, b, a}는 같은 다중 집합입니다.

매우 일반적인 프로그래밍에 MULTISET의 유용한 예는 객체의 값의 집합이다 : 여기

values({a: 1, b: 1}) //=> Multiset(1,1) 

숫자가 순서화되어, 아직 Set(1)로 감소 될 수없는 예 것 오브젝트 값에 대한 반복을 중단하십시오.

또한, 링크 된 위키 백과 문서에서 인용 (참조 거기 참조).

은 멀티 세트는 데이터베이스의 중요한 도구가되고있다 [18] [19] [20] 예를 들어, 다중 세트는 종종 데이터베이스 시스템에서 관계를 구현하는 데 사용됩니다. Multisets은 또한 컴퓨터 과학에서 중요한 역할을합니다.

관련 문제