3.5.1 연습 문제 17: 블룸 필터 만들기

    이번 연습 문제에서는 블룸 필터를 만들고 몇 가지 기본 연산을 수행해보겠습니다. 특히 거짓- 긍정에 대한 테스트도 진행하겠습니다.

      1. 필요한 헤더 파일을 포함합니다.

    #include <iostream>
    #include <vector>
    

      2. 블룸 필터 구현 클래스를 정의하고 필요한 멤버를 추가합니다.

    class bloom_filter
    {
        std::vector<bool> data;
        int nBits;
    

      3. 해시 함수를 추가합니다. 여기서는 매우 단순한 해시 함수를 사용하겠습니다.

    int hash(int num, int key)
    {
        switch (num)
        {
        case 0: return key % nBits;
        case 1: return (key / 7) % nBits;
        case 2: return (key / 11) % nBits;
        }
    
        return 0;
    }
    

    이 함수의 인자 num은 내부에서 어떤 해시 함수를 사용할지 결정하는 역할을 합니다. 이렇게 함으로써 여러 개의 해시 함수를 따로 만들지 않아도 됩니다. 이 방법은 더 많은 해시 함수를 사용해야 하는 경우에도 쉽게 확장할 수 있습니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.