Minimum Number of Platforms Problem

Greedy AlgorithmData StructureAlgorithms

A list of arrival and departure time is given. Now the problem is to find the minimum number of platforms are required for the railway as no train waits.

By sorting all timings in sorted order, we can find the solution easily, it will be easy to track when the train has arrived but not left the station.

The time complexity of this problem is O(n Log n).

Input and Output

Input:
Lists of arrival time and departure time.
Arrival: {900, 940, 950, 1100, 1500, 1800}
Departure: {910, 1200, 1120, 1130, 1900, 2000}
Output:
Minimum Number of Platforms Required: 3

Algorithm

minPlatform(arrival, departure, int n)

Input − The list of arrival time and the departure times, and the number of items in the list

Output − The number of minimum platforms is needed to solve the problem.

Begin
sort arrival time list, and departure time list
platform := 1 and minPlatform := 1
i := 1 and j := 0

for elements in arrival list ‘i’ and departure list ‘j’ do
if arrival[i] < departure[j] then
platform := platform + 1
i := i+1
if platform > minPlatform then
minPlatform := platform
else
platform := platform – 1
j := j + 1
done
return minPlatform
End

Example

#include<iostream>
#include<algorithm>
using namespace std;

int minPlatform(int arrival[], int departure[], int n) {
sort(arrival, arrival+n);     //sort arrival and departure times
sort(departure, departure+n);

int platform = 1, minPlatform = 1;
int i = 1, j = 0;

while (i < n && j < n) {
if (arrival[i] < departure[j]) {
i++;
if (platform > minPlatform)    //if platform value is greater, update minPlatform
minPlatform = platform;
} else {
platform--;      //delete platform
j++;
}
}
return minPlatform;
}

int main() {
int arrival[] = {900, 940, 950, 1100, 1500, 1800};
int departure[] = {910, 1200, 1120, 1130, 1900, 2000};
int n = 6;
cout << "Minimum Number of Platforms Required: " << minPlatform(arrival, departure, n);
}

Output

Minimum Number of Platforms Required: 3
Published on 09-Jul-2018 06:55:43