https://www.youtube.com/watch?v=-e-zvkDJkCs
Being a football fan can be challenging, especially when searching for information about favorite teams and players scattered across the vastness of the internet. Comparing players from different leagues is a common desire, but the process can be cumbersome and lack directness.
Football fans often follow multiple leagues and have favorite players across various clubs. The motivation behind this project is to facilitate the exploration of connections between players through shared teams or matches played against each other.
Our website enables users to compare any two football players directly. The comparison mechanism involves traversing a graph to determine if one player has beaten the other in any common games. If not, the algorithm checks for indirect connections through players who have defeated one another. The result includes the number of nodes traversed, time taken, and maximum memory usage during the pathfinding process.
- @vitejs/plugin-react uses Babel for Fast Refresh
- @vitejs/plugin-react-swc uses SWC for Fast Refresh
The dataset utilized encompasses information about soccer clubs worldwide, games played in the last 10 years, and details about players active during the same period. It also includes comprehensive information about player appearances in all games over the specified timeframe.
C++: Used for processing CSV files, organizing data into classes, and implementing backend functionalities. Javascript and React, Vite, React-graph-vis: Employed to build the frontend website and visualize the comparison results. Algorithms Implemented Breadth-First Search (BFS) and Depth-First Search (DFS): Utilized on an adjacency list to determine the better player between two individuals. Additional Data Structures/Algorithms Used Adjacency List: Stores information about game wins, where each player is a node in the graph, and directed edges represent victories. Classes: Created for players and clubs, utilizing vectors and unordered_maps to efficiently store and manage data.
Thomas: Frontend development, website building, and visualization. Implemented BFS and DFS algorithms for pathfinding. Edward: Backend development in C++, processing CSV files, and creating the adjacency matrix for data storage. Aryan: Worked on both frontend and backend, transformed C++ generated data into JSON format for website integration.
Changes After Proposal We scaled back on initially planned algorithms, opting out of Dijkstra's algorithm due to its suitability for weighted graphs, while ours is unweighted.
Data Processing Functions (e.g., read_CSV): O(m) time, where m is the number of lines in the CSV file. BFS and DFS: O(V + E), where V and E are the numbers of vertices and edges, respectively, in the graph. Our project streamlines football player comparisons, offering fans a user-friendly way to explore the connections between their favorite players across different leagues.