dewodt
Back

WikiRace

WikiRace Logo

Description

The Wiki Racer Solver is an innovative project designed to find the shortest path between two Wikipedia pages using web scraping and caching technologies. This project was developed to fulfill one of IF2211 Strategy Algorithm course assignment . The primary goal was to explore and implement efficient algorithms for solving complex search problems. This project was a group assignment which I worked with Rayhan and Emery (my classmates).

Library / Tools Used

Features

  • Great UI, Responsive, and with Dark Modes
Home Page
  • Solve wikirace problem with BFS/IDS algorithm and choose to find single or multiple (every) solution
WikiRace Solver Page
  • Network graph visualization of calculated result
Result Part 1
Result Part 2

Development Experience

This assignment was given to us in the fourth semester of college, shortly after we completed our midterm exams. Fortunately, we had an ample amount of free time to work on this project due to the Eid holiday. During this period, I set up Docker, developed the front-end, and initialized the back-end within three days. Subsequently, I shifted my focus to another project, Wisuda April ITB 2024 Website , for the remainder of the holiday, but that’s a story for another time.

The front-end development process was relatively straightforward, with the most interesting aspect being the search for a suitable library to visualize a network graph for our results. I am particularly pleased and proud of how the front-end turned out.

As for the back-end, it was quite basic, featuring only a single endpoint. However, the real challenge lay in the algorithm implementation. While the IDS/BFS algorithm might seem simple and trivial at first glance (a quick Google search can provide plenty of information on it), the true difficulty was in optimizing it through multithreading to enhance its speed. The 4th degree search took a considerable amount of time. Adding to the complexity, there was an unexpected specification revision on the third day before the deadline, which allowed for caching. Despite this sudden change, we managed to implement caching using JSON effectively.

On the day of the assignment demonstration with the lab assistant, we were instructed not to use the cache we had implemented. Despite this restriction, thankfully we successfully passed all the test cases on time and accurately. I consider this assignment one of the best college assignment I have ever done.