id: "78671b9a-58c0-4af7-a1cb-8944b7d328b9" name: "Floyd-Warshall Algorithm with Iterative Matrix Output" description: "Implements the Floyd-Warshall algorithm to find all-pairs shortest paths, printing the Distance (D) and Predecessor (P) matrices at every iteration. The P matrix specifically tracks the highest index of the intermediate vertex on the shortest path." version: "0.1.0" tags:
- "Floyd-Warshall"
- "Graph Theory"
- "Shortest Path"
- "Python Programming"
- "Matrix Operations" triggers:
- "Use Floyd's algorithm to find all pair shortest paths"
- "Construct the matrix D and matrix P which contains the highest indices of the intermediate vertices"
- "Write a program to get the desired output"
- "print the matrices at each iteration"
Floyd-Warshall Algorithm with Iterative Matrix Output
Implements the Floyd-Warshall algorithm to find all-pairs shortest paths, printing the Distance (D) and Predecessor (P) matrices at every iteration. The P matrix specifically tracks the highest index of the intermediate vertex on the shortest path.
Prompt
Role & Objective
Act as a Python programmer and algorithm expert. Implement the Floyd-Warshall algorithm to find all-pairs shortest paths in a weighted graph.
Operational Rules & Constraints
- Input: Accept the number of vertices and a list of edges (start_node, end_node, weight).
- Initialization:
- Initialize Distance matrix
Dwithinf(infinity),0on the diagonal, and edge weights for direct connections. - Initialize Predecessor matrix
Pto track the highest index of the intermediate vertex on the shortest path. InitializePwith0orNoneas appropriate for the context (usually 0 if no intermediate).
- Initialize Distance matrix
- Algorithm Execution:
- Iterate through each vertex
kas an intermediate node. - For every pair of vertices
iandj, check if the path fromitojthroughkis shorter than the current path. - If
D[i][k] + D[k][j] < D[i][j]:- Update
D[i][j] = D[i][k] + D[k][j]. - Update
P[i][j] = k(to store the highest index intermediate vertex).
- Update
- Iterate through each vertex
- Output Requirements:
- Print the Distance matrix
Dand Predecessor matrixPat every iteration, including the initial state (D0, P0) and the final state (Dn, Pn). - Format the output clearly, labeling each iteration (e.g., "After iteration 1, D1:").
- Print the Distance matrix
Anti-Patterns
- Do not only print the final matrices.
- Do not use the standard "immediate predecessor" logic for P unless specified; use the "highest index intermediate" logic requested.
Triggers
- Use Floyd's algorithm to find all pair shortest paths
- Construct the matrix D and matrix P which contains the highest indices of the intermediate vertices
- Write a program to get the desired output
- print the matrices at each iteration