You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -52,60 +57,73 @@ SmashThePath aims to determine the time between two nodes and find the fastest w
52
57
|-|-|
53
58
|The project aims to teach us a simple and useful way to manage travel with our API[^restapi] . It is not intended to be very large or commercially viable by the final deadline. |To complete this project, we need to create an API that meets our requirements. An overly complicated interface could be difficult for new users to handle.
54
59
55
-
56
60
## C. Personas
61
+
57
62
This project will not include personas, for the simple reason that the people who will use it, must understand how it works and be able to code a software to use SmashThePath effectively.
58
63
59
64
## D. Use case
60
65
61
66
### 1st use case
62
-

67
+
68
+

63
69
64
70
### 2nd use case
65
-

71
+
72
+

66
73
67
74
### 3rd use case
68
-

75
+
76
+

69
77
70
78
# II. Functional requirements
79
+
71
80
## A. Node and Path Management
81
+
72
82
The system shall allow defining nodes (landmarks) and their connections with specified travel times.
73
83
It shall support reading node and connection data[^data] from a file (e.g., USA-roads.csv).
74
84
75
85
## B. Fastest Path Calculation
86
+
76
87
The system will calculate the fastest path and total travel time between two nodes based on the given data.
77
88
It provide an ordered list of landmarks in the path.
78
89
79
90
## C. REST API Specification
91
+
80
92
Expose a GET[^get] endpoint that accepts:
81
93
Input: Source and destination node IDs.
82
94
Output:
83
95
Travel time.
84
96
Ordered list of landmarks in the path.
85
97
Response formats: JSON and XML[^jsonxml] .
86
98
87
-
88
99
# III. Non-Functional Requirements
89
100
90
101
## A. Programming Language
102
+
91
103
The software must be implemented in C++ to ensure optimal performance and efficient memory handling.
92
104
93
105
## B. Performance
106
+
94
107
To prioritize speed over precision, our solution can use heuristics, provided the returned path's duration does not exceed the shortest possible path by more than 10%.
95
108
96
109
## C. Scalability
110
+
97
111
The software must efficiently handle large datasets (e.g., 24 million nodes in USA-roads.csv).
98
112
99
113
## D. REST API Accessibility
114
+
100
115
The REST API must run on an HTTP server accessible via localhost or public network and support concurrent requests.
101
116
102
117
## E. Data Format Compatibility
118
+
103
119
The system shall ensure compatibility with CSV files and handle potential errors like missing or malformed data.
104
120
105
121
## F. Reliability
122
+
106
123
The system must ensure accurate results for pathfinding, even under high load or large datasets.
107
124
108
125
# IV. Feature of the API
126
+
109
127
The travel time between the node A and the node B.
110
128
111
129
You can also use other coding language to use the SmashThePath (XML/JSON).
@@ -114,26 +132,35 @@ You have the time to find the path.
114
132
115
133
You have the number of node.
116
134
117
-

135
+

118
136
119
137
# V. Future improvement
138
+
120
139
## 1. Advanced Pathfinding Features
140
+
121
141
### Dynamic Weights:
142
+
122
143
Incorporate real-time data such as traffic conditions, weather, or road closures to dynamically adjust travel times.
144
+
123
145
### Multi-Criteria Optimization:
146
+
124
147
Allow users to optimize paths based on multiple criteria, such as shortest distance, fastest time, or cost.
125
148
126
149
## 2. Scalability and Performance Enhancements
150
+
127
151
### Distributed Computation:
152
+
128
153
Implement distributed graph processing using frameworks like Apache Giraph or GraphX to handle extremely large datasets.
154
+
129
155
### Pre-processing and Caching:
156
+
130
157
Pre-process and cache the shortest paths for commonly requested queries to reduce response times.
131
158
132
-
# VI. Glossary
159
+
# Glossary
133
160
134
161
[^data]: Facts and statistics collected together for reference or analysis. [Source](https://dictionary.cambridge.org/dictionary/english/data)
135
162
136
-
[^restapi]: An application programming interface (API) that follows the design principles of the REST architectural style. [Source](https://www.redhat.com/en/topics/api/what-is-a-rest-api)
163
+
[^restapi]: An application programming interface (API) that follows the design principles of the REST architectural style. [Source](https://www.redhat.com/en/topics/api/what-is-a-rest-api)
137
164
138
165
[^cpp]: An object-oriented programming (OOP) language that is viewed by many as the best language for creating large-scale applications. [Source](https://en.wikipedia.org/wiki/C%2B%2B)
0 commit comments