Skip to content

Bloom Filter #8615

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 32 commits into from
Apr 8, 2023
Merged
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
173ab0e
Bloom filter with tests
isidroas Apr 6, 2023
08bc970
has functions constant
isidroas Apr 6, 2023
0448109
fix type
isidroas Apr 6, 2023
486dcbc
isort
isidroas Apr 6, 2023
4111807
passing ruff
isidroas Apr 6, 2023
e6ce098
type hints
isidroas Apr 6, 2023
e4d39db
type hints
isidroas Apr 6, 2023
7629686
from fail to erro
isidroas Apr 6, 2023
3926167
captital leter
isidroas Apr 6, 2023
280ffa0
type hints requested by boot
isidroas Apr 6, 2023
5d460aa
descriptive name for m
isidroas Apr 6, 2023
cc54095
more descriptibe arguments II
isidroas Apr 6, 2023
78d19fd
moved movies_test to doctest
isidroas Apr 7, 2023
8b1bec0
commented doctest
isidroas Apr 7, 2023
28e6691
removed test_probability
isidroas Apr 7, 2023
2fd7196
estimated error
isidroas Apr 7, 2023
314237d
added types
isidroas Apr 7, 2023
9b01472
again hash_
isidroas Apr 7, 2023
c132d50
Update data_structures/hashing/bloom_filter.py
isidroas Apr 8, 2023
313c80c
from b to bloom
isidroas Apr 8, 2023
18e0dde
Update data_structures/hashing/bloom_filter.py
isidroas Apr 8, 2023
54041ff
Update data_structures/hashing/bloom_filter.py
isidroas Apr 8, 2023
483a2a0
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 8, 2023
174ce08
syntax error in dict comprehension
isidroas Apr 8, 2023
00cc60e
from goodfather to godfather
isidroas Apr 8, 2023
35fa5f5
removed Interestellar
isidroas Apr 8, 2023
5cd20ea
forgot the last Godfather
isidroas Apr 8, 2023
7617143
Revert "removed Interestellar"
isidroas Apr 8, 2023
799171a
pretty dict
isidroas Apr 8, 2023
1a71f4c
Apply suggestions from code review
cclauss Apr 8, 2023
4e0263f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 8, 2023
e746746
Update bloom_filter.py
cclauss Apr 8, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
added types
  • Loading branch information
isidroas committed Apr 7, 2023
commit 314237d94e7aee8a835cc97d9b2472a1ce1acc44
14 changes: 7 additions & 7 deletions data_structures/hashing/bloom_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,25 +72,25 @@ def __init__(self, size: int = 8) -> None:
self.size = size

def add(self, value: str) -> None:
h = self.hash_(value)
h = self.hash(value)
self.bitarray |= h

def exists(self, value: str) -> bool:
h = self.hash_(value)
h = self.hash(value)
return (h & self.bitarray) == h

def __contains__(self, other):
def __contains__(self, other: str) -> bool:
return self.exists(other)

def format_bin(self, bitarray: int) -> str:
res = bin(bitarray)[2:]
return res.zfill(self.size)

@property
def bitstring(self):
def bitstring(self) -> None:
return self.format_bin(self.bitarray)

def hash_(self, value: str) -> int:
def hash(self, value: str) -> int:
res = 0b0
for func in HASH_FUNCTIONS:
b = func(value.encode()).digest()
Expand All @@ -99,9 +99,9 @@ def hash_(self, value: str) -> int:
return res

def format_hash(self, value: str) -> str:
return self.format_bin(self.hash_(value))
return self.format_bin(self.hash(value))

def estimated_error_rate(self):
def estimated_error_rate(self) -> float:
n_ones = bin(self.bitarray).count("1")
k = len(HASH_FUNCTIONS)
return (n_ones / self.size) ** k