프로그래밍의 수학 개념 - 집합

오늘 나는 일련의 대상 관계에 관한 게시물을 시작할 것이다.이 문장에서 우리는 집합이라는 수학적 기초 개념을 보게 될 것이다.그것들에 적용될 수 있는 용례 예시와 조작을 검사합시다.

세트

A set is a well-defined collection of distinct objects.

The objects that belong to a set are called its elements (or points or members)


자료 출처: Functional Analysis P.K. 자은, 해리러 아하마드와 Om P. 아호자
집합을 정의하는 비공식적인 방법은 용기(상자/원)이며 그 안에 서로 다른 대상을 포함한다.다음과 같은 기호로 표현할 수 있습니다.
S = {1, 2, 'some string'}
  • 집합된 원소는 괄호 안에 쓴다.S는 집합의 표식부호다.
  • 물체의 순서는 중요하지 않다.
    S = {1, 2, 3} = {2, 3, 1} = {3, 2, 1}
    
  • 집합의 정의는 같은 원소를 중복할 수 없기 때문에 원소마다 최대 한 번만 표시할 수 있다.
  • S = {1, 1, 2, 3, 2, 3} = {1, 2, 3}
    

    사용
    우리는 집합으로 우리 주위의 세계를 정의할 수 있다.
  • 한 나라의 주.
  • States = {'New York', 'California', 'Florida', 'Washington DC', ...} // size = 50
    
  • 이번 주에 귀하의 사이트의 사용자 이름 ID 집합을 사용했습니다.
  • usersFromLastWeek = {12938, 89032, 55866}
    
  • 빈자리.
  • S = {}
    
    집합은 더욱 복잡한 상황을 나타낼 수도 있다.
  • 자연수의 집합(무한).
  • S = {1, 2, 3, 4, ...} // Size = Infinity
    
  • 상기 집합.
  • S = { 
        {'New York', 'California', 'Florida', 'Washington DC', ...},
        {12938, 89032, 55866},
        {}
    } // Size = 3
    
  • 자체 포함 집합.
  • S = {1, 2, S} =
    {
        1, 2,
        { // S
            1, 2, { // S
                1, 2, {...}
            }
        }
    } // Size = 3
    
    💡 네스트된 컬렉션에 포함된 요소는 루트 컬렉션(S의 직접 요소로 간주되지 않습니다.

    등록 정보
  • Size = 집합에 존재하는 원소수.

  • 조작하다
    작업은 컬렉션을 읽기 및/또는 다른 컬렉션(또는 다른 객체)으로 변환하는 방법입니다.
    💡 아래의 기호는 위조 코드이다

  • 설정된 크기가 0인지 확인하려면 비어 있습니다.
  • S1 = {}
    isEmpty(S1) // = true
    S2 = {1, 2, 3}
    isEmpty(S2) // = false
    

  • 컬렉션에 하나 이상의 요소를 추가합니다.
  • S1 = {1, 2}; 
    S2 = add(S1, 3, 10); // = {1, 2, 3, 10};
    

  • 컬렉션에서 하나 이상의 요소를 삭제합니다.
  • S1 = {'a', 'b', 'c', 'd'}; 
    S2 = remove(S1, 'c') // = {'a', 'b', 'd'}
    

  • 컬렉션에 요소가 있는지 확인해야 합니다.
  • S1 = {'a', 'b', 'c', 'd'}; 
    has(S1, 'e') // False
    has(S1, 'a') // True
    

  • 순환 집합 중의 원소를 교체하다.
  • S1 = {'Sandra', 'Mary', 'Louis'};
    for (let person of S1) {
        // person = Sandra, Mary and Louis, respectively
        // Order may vary
    }
    

  • 하나의 집합이 다른 집합과 완전히 같은 요소를 포함한다면 비교에 사용됩니다.
  • S1 = {'first', 'second', 'third'}
    S2 = {'second', 'third', 'first'} // Order does not matter
    equals(S1, S2) // True
    S3 = {'fourth'}
    equals(S1, S3) // False
    

  • 합집합: 두 집합의 모든 요소를 포함하는 결과 집합을 만듭니다.
  • S1 = {'first', 'second', 'third'}
    S2 = {'fourth'}
    union(S1, S2) // = {'first', 'second', 'third', 'fourth'}
    

  • 차이점: Set1에 포함되지 않은 요소를 사용하여 결과 집합을 만듭니다.
  • S1 = {'first', 'second', 'third'}
    S2 = {'second'}
    difference(S1, S2) // = {'first', 'third'}
    

  • 교차: 결과 집합을 만듭니다. Set2Set1 의 요소만 포함합니다.
  • S1 = {'first', 'second', 'third'}
    S2 = {'second', 'fourth'}
    intersection(S1, S2) // = {'second'}
    

  • 교차하지 않음: 두 집합의 교차가 빈 집합과 같으면 교차하지 않습니다.
  • S1 = {1, 2, 3}
    S2 = {4, 5, 6}
    areDisjoint(S1, S2) // = True
    
    S3 = {3, 9, 10}
    areDisjoint(S1, S3) // = False, because of "3"
    areDisjoint(S2, S3) // = True
    

  • 주어진 조건을 충족시키는 원소 집합만 가져옵니다.조건에 만족하지 않는 원소는 결과의 일부분에 속하지 않는다.
  • S1 = {1, 2, 3, 4, 5, 6}
    numberIsEven = (number) => number % 2 === 0;
    S2 = filter(S1, numberIsEven) // = {2, 4, 6}
    

  • 집합 원소를 다른 원소에 비추다
  • S1 = {1, 2, 3, 4, 5}
    S2 = map(S1, (number) => number * 9)) // = {9, 18, 27, 36, 45}
    

  • Reduce는 컬렉션을 반복하여 새 결과를 작성하는 데 사용됩니다.그것은 덧셈기와 항목을 받아들여 덧셈기에 새 값을 되돌려줍니다.
  • S1 = {1, 2, 3, 4, 5}
    reduce (S1, (count, element) => count + element, 0) // Sum all elements, = 15
    

  • 대칭차분법은 두 집합의 원소를 얻는 데 쓰이지만 두 집합의 원소는 아니다.
  • S1 = {1, 2, 3, 4}
    S2 = {2, 4, 5, 6}
    S3 = symmetricDifference(S1, S2) // = {1, 3, 5, 6}
    

  • 하나의 집합이 다른 집합의 모든 원소를 포함하는지 확인하는 초집합입니다.
  • S1 = {1, 2, 3, 4}
    S2 = {1}
    isSuperset(S1, S2) // = true
    S3 = {3, 4}
    isSuperset(S1, S3) // = true
    S4 = {3, 4, 5}
    isSuperset(S1, S4) // = false
    

  • 한 집합의 모든 요소가 다른 집합에 포함되는지 확인하는 서브집합입니다.
  • S1 = {1, 2, 3, 4}
    S2 = {1}
    isSubset(S2, S1) // = true
    S3 = {3, 4}
    isSubset(S3, S1) // = true
    S4 = {3, 4, 5}
    isSubset(S4, S1) // = false
    

  • 찾기: 컬렉션에서 특정 구속을 충족하는 요소를 찾을 수 있습니다.
  • S1 = {1, 2, 3, 4, 5}
    element = find(S1, n => n > 3) // = 4 or 5 (order may vary)
    

  • Every: 컬렉션의 모든 요소가 특정 구속을 충족하는지 확인합니다.
  • S1 = {1, 2, 3, 4, 5}
    element = every(S1, n => n < 10) // = True
    
    S1 = {1, 2, 3, 4, 5}
    element = every(S1, n => n < 3) // = False, because of 4 and 5
    

  • 사이즈별로 두 세트 혹은 두 세트 이상 주문할게요.제공된 집합수 크기의 원조를 되돌려줍니다.
  • S1 = {1, 2}
    S2 = {0}
    S3 = {4, 1, 2}
    
    order(S1, S2) // (S2, S1, S3)
    

  • 변경: 두 개의 집합을 비교하여 첫 번째 집합에서 삭제하거나 어떤 요소를 추가해야만 두 번째 집합과 같을 수 있는지 찾아내는 방법.
  • S1 = {1, 2, 3, 4, 5, 6}
    S2 = {4, 5, 6, 7}
    Changes(S1, S2) = ({1, 2, 3}, {7}) // Starting from S1, remove 1, 2 and 3, and add 7 to transform it to S2
    

  • 피리칼 적: 두 집합을 곱해서 질서정연한 쌍을 만듭니다
  • S1 = {'a', 'b', 'c'}
    S2 = {0, 1}
    S3 = cartesianProduct(S1, S2) // = { ('a', 0), ('a', 1), ('b', 0), ('b', 1), ('c', 0), ('c', 1) }
    
    다음 글에서 우리는 질서정연한 배합과 그 용도를 더욱 깊이 이해할 것이다.

    보너스

    좋은 웹페이지 즐겨찾기