Generate a python program that has the following intention:

The intention of the program is to find the minimum spanning tree (MST) of a weighted, undirected graph using a divide and conquer approach. The function minimum_spanning_tree takes a weight matrix weight_by_line as input, where each row represents a node and each column represents an edge with a specific weight.

Here's a step-by-step explanation of the program:

Sort the edges in non-decreasing order of their weights.
Initialize a set mst_edges to store the minimum spanning tree edges and a dictionary divide_by_point to keep track of the partition of nodes.
Iterate through the sorted edges. For each edge (i, j), if node j is already a part of a connected component containing node i, skip the edge.
If node j is not yet connected to any connected component containing node i, add edge (i, j) to mst_edges, update the partition of nodes, and connect node j's connected components to node i's connected components.
The MST is formed by the edges in the mst_edges set.
The program uses a divide and conquer approach, where it first divides the graph into two connected components using a random edge, and then recursively finds the MST for each component. Finally, it combines the two MSTs by adding the connecting edge to the overall MST. Your answer should have exactly 4 paragraphs. Make sure that the first paragraph starts with the word "makes" and that each paragraph is separated by two new lines.
user