Solution: Connecting n Pipes With Minimum Cost
This review provides a detailed analysis of how to connect n pipes with the minimum cost.
We'll cover the following...
Solution: sorting
import heapqdef min_cost(pipes):"""Calculates the minimum cost of connecting pipes:param pipes: A list where its length is the number of pipes and indexes are the specific lengths of the pipes.:return: The minimum cost"""# Create a priority queue out of the# given listheapq.heapify(pipes)# Initializ resultcost = 0# While size of priority queue# is more than 1while(len(pipes) > 1):# Extract shortest two pipes from the priority queuefirst = heapq.heappop(pipes)second = heapq.heappop(pipes)# Connect the pipe: update cost# and insert the new pipe to pipes queuecost += first + secondheapq.heappush(pipes, first + second)return cost# Main program to test above functionif __name__ == "__main__":pipes = [4, 3, 2, 6]print(min_cost(pipes))
Explanation
If you look at the animation present in the previous lesson, you will notice that the lengths of the pipes which are picked first are included iteratively (i.e. each time). Therefore, we want them to be as small as possible. Now, let’s be greedy!
First, we initialize the priority ...