Minimum Platforms Required šŸŽÆ

beginner
16 min

Minimum Platforms Required šŸŽÆ

Welcome to a fascinating journey into the world of data structures and algorithms! Today, we're diving into a classic problem-solving approach called Minimum Platforms Required. This problem is an excellent example of dynamic programming and queue-based algorithms. Let's get started!

Understanding the Problem šŸ“

Imagine a railway station with multiple trains arriving at different times and departing at different times. You need to build a minimal number of platforms to handle all these trains without any overlap. Sounds exciting, right? Let's break it down further.

Problem Statement

Given an array arrival representing the arrival times of trains and an array departure representing their departure times, find the minimum number of platforms required to handle all trains without any platform being used simultaneously for two different trains.

Solving the Problem šŸ’”

Our approach to solving this problem will involve creating an "activity" schedule, where each platform is an activity. We'll represent the activity schedule using a data structure called a queue.

Creating the Activity Schedule

  1. Sort both the arrival and departure arrays in ascending order.

  2. Initialize an empty queue (platform_queue) and an integer variable (platforms) to store the minimum number of platforms required. Initially, set platforms to 0.

  3. Iterate through the sorted arrival array:

    • For each arrival time, if the platform_queue is empty or the front element (i.e., the earliest scheduled platform) is less than the current arrival time, add the current time to the platform_queue.

    • If the platform_queue is not empty and the front element of the platform_queue is greater than or equal to the current arrival time, remove the front element from the platform_queue. This represents the departure of a train, making the platform free for another train.

  4. After iterating through all the arrival times, the number of elements in the platform_queue will be the minimum number of platforms required to handle all the trains.

Putting It All Together āœ…

Now let's write a Python function to solve the Minimum Platforms Required problem using the approach discussed above:

python
def min_platforms(arrival, departure): n = len(arrival) arrival.sort() departure.sort() platform_queue, platforms = [], 0 i = 0 for a in arrival: while i < n and arrival[i] <= a: platform_queue.append(departure[i]) i += 1 platform_queue.append(None) platforms += 1 # Check if the platform becomes free after the departure of a train while i < n and platform_queue and platform_queue[-1] <= a: platform_queue.pop() i += 1 return platforms

Testing Our Solution šŸ’”

Let's test our function with some examples:

python
arrival = [900, 940, 950, 1100, 1500, 1800] departure = [910, 1200, 1120, 1130, 1900, 2000] print("Minimum platforms required:", min_platforms(arrival, departure))

The output will be 3, which means three platforms are required to handle all the trains without any overlap.

Quiz Time šŸŽÆ

Let's put your understanding to the test with a quiz!

Quick Quiz
Question 1 of 1

What does the `min_platforms` function return?

We've successfully covered the Minimum Platforms Required problem in depth! Practice this problem and its variations to solidify your understanding of data structures and algorithms. Happy coding! šŸš€šŸ’»