← Back

Program 4: Implement a Hill Climbing search to find the peak in a numeric dataset.

Simple Python Code
def hill_climbing(dataset):
    import random
    current = random.randint(0, len(dataset) - 1)
    
    while True:
        neighbors = []
        if current > 0:
            neighbors.append(current - 1)
        if current < len(dataset) - 1:
            neighbors.append(current + 1)
        
        if not neighbors:
            break
        
        best_neighbor = max(neighbors, key=lambda x: dataset[x])
        
        if dataset[best_neighbor] <= dataset[current]:
            break
        
        current = best_neighbor
    
    return current, dataset[current]

print("Hill Climbing:")
data = [1, 3, 7, 12, 9, 5, 2]
peak_idx, peak_val = hill_climbing(data)
print(f"Peak found at index {peak_idx} with value {peak_val}\n")
Advanced Python Code
def hill_climbing(dataset):
    import random
    current = random.randint(0, len(dataset) - 1)
    
    while True:
        neighbors = []
        if current > 0:
            neighbors.append(current - 1)
        if current < len(dataset) - 1:
            neighbors.append(current + 1)
        
        if not neighbors:
            break
        
        best_neighbor = max(neighbors, key=lambda x: dataset[x])
        
        if dataset[best_neighbor] <= dataset[current]:
            break
        
        current = best_neighbor
    
    return current, dataset[current]

print("Hill Climbing:")
data = [1, 3, 7, 12, 9, 5, 2]
peak_idx, peak_val = hill_climbing(data)
print(f"Peak found at index {peak_idx} with value {peak_val}\n")
Infographics