reorganise directories

upd chapter_01/binary.py
This commit is contained in:
2025-03-26 01:27:35 +00:00
parent ab09aa5269
commit 4cd7bb7d18
43 changed files with 54 additions and 53 deletions

3
chapter_10/README.md Normal file
View File

@@ -0,0 +1,3 @@
# Approximation algorithm
- Easy to write, fast to run, useful for obtaining approximate solutions for NP-hard problems.

44
chapter_10/greedy.py Normal file
View File

@@ -0,0 +1,44 @@
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
stations = {
"kone": set(["id", "nv", "ut"]),
"ktwo": set(["wa", "id", "mt"]),
"kthree": set(["or", "nv", "ca"]),
"kfour": set(["nv", "ut"]),
"kfive": set(["ca", "az"]),
}
def fget():
needed = set()
for states in stations.values():
needed |= states
return needed
def greedy():
states_needed = fget()
logger.debug(states_needed)
final_stations = set()
while states_needed:
best_station = None
states_covered = set()
for station, states in stations.items():
covered = states_needed & states
if len(covered) > len(states_covered):
best_station = station
states_covered = covered
states_needed -= states_covered
final_stations.add(best_station)
return final_stations
final_stations = greedy()
print(f"final stations greedy approximation: {final_stations}")