Spaces:
Sleeping
Sleeping
| import React from 'react'; | |
| import { BookOpen, Users, Code, FileText, GraduationCap, Calendar } from 'lucide-react'; | |
| export const GroupInfo: React.FC = () => { | |
| return ( | |
| <div className="h-full overflow-auto" style={{ backgroundColor: '#0a0a0b' }}> | |
| <div className="max-w-4xl mx-auto py-12 px-8"> | |
| {/* Paper-style header */} | |
| <header className="text-center mb-12 pb-8 border-b border-zinc-800"> | |
| <p className="text-xs uppercase tracking-[0.3em] text-zinc-500 mb-4 font-medium"> | |
| Artificial Intelligence Project | |
| </p> | |
| <h1 className="text-2xl font-serif text-zinc-100 mb-4 leading-tight"> | |
| Package Delivery Search Agent:<br /> | |
| <span className="text-zinc-400">A Comparative Study of Informed and Uninformed Search Algorithms</span> | |
| </h1> | |
| <div className="flex items-center justify-center gap-2 text-xs text-zinc-500 mt-6"> | |
| <Calendar className="w-3.5 h-3.5" /> | |
| <span>Academic Year 2025-2026</span> | |
| </div> | |
| </header> | |
| {/* Authors section */} | |
| <section className="mb-10"> | |
| <div className="flex items-center gap-2 mb-4"> | |
| <Users className="w-4 h-4 text-zinc-500" /> | |
| <h2 className="text-sm font-semibold text-zinc-300 uppercase tracking-wider">Team Members</h2> | |
| </div> | |
| <div className="grid grid-cols-2 gap-4"> | |
| {[ | |
| { name: 'Kacem Mathlouthi', role: 'GL 4/2' }, | |
| { name: 'Mohamed Amine Houas', role: 'GL 4/1' }, | |
| { name: 'Oussema Kraiem', role: 'GL 4/2' }, | |
| { name: 'Alaeddine El Zaouali', role: 'GL 4/2' }, | |
| ].map((author) => ( | |
| <div key={author.name} className="bg-zinc-900/50 border border-zinc-800 rounded-lg p-4"> | |
| <p className="text-zinc-200 font-medium">{author.name}</p> | |
| <p className="text-xs text-zinc-500 mt-0.5">{author.role}</p> | |
| </div> | |
| ))} | |
| </div> | |
| </section> | |
| {/* Abstract */} | |
| <section className="mb-10"> | |
| <div className="flex items-center gap-2 mb-4"> | |
| <FileText className="w-4 h-4 text-zinc-500" /> | |
| <h2 className="text-sm font-semibold text-zinc-300 uppercase tracking-wider">Abstract</h2> | |
| </div> | |
| <div className="bg-zinc-900/30 border-l-2 border-zinc-700 pl-4 py-2 text-sm text-zinc-400 leading-relaxed text-justify"> | |
| <p> | |
| This project presents an interactive visualization tool for comparing search algorithms in the context | |
| of package delivery optimization. We implement and analyze six fundamental search strategies: Breadth-First | |
| Search (BFS), Depth-First Search (DFS), Iterative Deepening Search (IDS), Uniform Cost Search (UCS), | |
| Greedy Best-First Search, and A* Search. The system models a grid-based city environment with varying | |
| traffic conditions, blocked roads, and tunnel shortcuts, providing a comprehensive testbed for evaluating | |
| algorithm performance in terms of path optimality, computational efficiency, and memory utilization. | |
| </p> | |
| </div> | |
| </section> | |
| {/* Project Details */} | |
| <section className="mb-10"> | |
| <div className="flex items-center gap-2 mb-4"> | |
| <Code className="w-4 h-4 text-zinc-500" /> | |
| <h2 className="text-sm font-semibold text-zinc-300 uppercase tracking-wider">Technical Implementation</h2> | |
| </div> | |
| <div className="grid grid-cols-2 gap-4 text-sm"> | |
| <div className="space-y-3"> | |
| <div> | |
| <p className="text-zinc-500 text-xs uppercase tracking-wider mb-1">Backend</p> | |
| <p className="text-zinc-300">Python 3.11 + FastAPI</p> | |
| </div> | |
| <div> | |
| <p className="text-zinc-500 text-xs uppercase tracking-wider mb-1">Frontend</p> | |
| <p className="text-zinc-300">React 19 + TypeScript + Vite</p> | |
| </div> | |
| <div> | |
| <p className="text-zinc-500 text-xs uppercase tracking-wider mb-1">State Management</p> | |
| <p className="text-zinc-300">Zustand</p> | |
| </div> | |
| </div> | |
| <div className="space-y-3"> | |
| <div> | |
| <p className="text-zinc-500 text-xs uppercase tracking-wider mb-1">Visualization</p> | |
| <p className="text-zinc-300">SVG + ShadCN</p> | |
| </div> | |
| <div> | |
| <p className="text-zinc-500 text-xs uppercase tracking-wider mb-1">Styling</p> | |
| <p className="text-zinc-300">Tailwind CSS v4</p> | |
| </div> | |
| <div> | |
| <p className="text-zinc-500 text-xs uppercase tracking-wider mb-1">Communication</p> | |
| <p className="text-zinc-300">REST API</p> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| {/* Algorithms */} | |
| <section className="mb-10"> | |
| <div className="flex items-center gap-2 mb-4"> | |
| <GraduationCap className="w-4 h-4 text-zinc-500" /> | |
| <h2 className="text-sm font-semibold text-zinc-300 uppercase tracking-wider">Implemented Algorithms</h2> | |
| </div> | |
| <div className="overflow-hidden rounded-lg border border-zinc-800"> | |
| <table className="w-full text-sm"> | |
| <thead> | |
| <tr className="bg-zinc-900/50"> | |
| <th className="text-left px-4 py-2 text-zinc-400 font-medium">Algorithm</th> | |
| <th className="text-left px-4 py-2 text-zinc-400 font-medium">Type</th> | |
| <th className="text-left px-4 py-2 text-zinc-400 font-medium">Optimal</th> | |
| <th className="text-left px-4 py-2 text-zinc-400 font-medium">Complete</th> | |
| </tr> | |
| </thead> | |
| <tbody className="divide-y divide-zinc-800"> | |
| {[ | |
| { name: 'Breadth-First Search', code: 'BFS', type: 'Uninformed', optimal: 'Yes*', complete: 'Yes' }, | |
| { name: 'Depth-First Search', code: 'DFS', type: 'Uninformed', optimal: 'No', complete: 'No' }, | |
| { name: 'Iterative Deepening', code: 'IDS', type: 'Uninformed', optimal: 'Yes*', complete: 'Yes' }, | |
| { name: 'Uniform Cost Search', code: 'UCS', type: 'Uninformed', optimal: 'Yes', complete: 'Yes' }, | |
| { name: 'Greedy Best-First', code: 'GBFS', type: 'Informed', optimal: 'No', complete: 'No' }, | |
| { name: 'A* Search', code: 'A*', type: 'Informed', optimal: 'Yes', complete: 'Yes' }, | |
| ].map((algo) => ( | |
| <tr key={algo.code} className="hover:bg-zinc-900/30 transition-colors"> | |
| <td className="px-4 py-2"> | |
| <span className="text-zinc-300">{algo.name}</span> | |
| <span className="text-zinc-600 text-xs ml-2">({algo.code})</span> | |
| </td> | |
| <td className="px-4 py-2 text-zinc-400">{algo.type}</td> | |
| <td className="px-4 py-2 text-zinc-400 font-mono">{algo.optimal}</td> | |
| <td className="px-4 py-2 text-zinc-400 font-mono">{algo.complete}</td> | |
| </tr> | |
| ))} | |
| </tbody> | |
| </table> | |
| </div> | |
| <p className="text-xs text-zinc-600 mt-2 italic">* When step costs are uniform</p> | |
| </section> | |
| {/* Heuristics */} | |
| <section className="mb-10"> | |
| <div className="flex items-center gap-2 mb-4"> | |
| <BookOpen className="w-4 h-4 text-zinc-500" /> | |
| <h2 className="text-sm font-semibold text-zinc-300 uppercase tracking-wider">Heuristic Functions</h2> | |
| </div> | |
| <div className="space-y-3 text-sm"> | |
| <div className="bg-zinc-900/30 border border-zinc-800 rounded-lg p-4"> | |
| <p className="text-zinc-300 font-medium mb-1">Manhattan Distance</p> | |
| <p className="text-zinc-500 font-mono text-xs">h(n) = |x<sub>n</sub> - x<sub>g</sub>| + |y<sub>n</sub> - y<sub>g</sub>|</p> | |
| </div> | |
| <div className="bg-zinc-900/30 border border-zinc-800 rounded-lg p-4"> | |
| <p className="text-zinc-300 font-medium mb-1">Euclidean Distance</p> | |
| <p className="text-zinc-500 font-mono text-xs">h(n) = sqrt((x<sub>n</sub> - x<sub>g</sub>)<sup>2</sup> + (y<sub>n</sub> - y<sub>g</sub>)<sup>2</sup>)</p> | |
| </div> | |
| <div className="bg-zinc-900/30 border border-zinc-800 rounded-lg p-4"> | |
| <p className="text-zinc-300 font-medium mb-1">Tunnel-Aware Heuristic</p> | |
| <p className="text-zinc-500 text-xs">Considers available tunnel shortcuts to improve estimate accuracy</p> | |
| </div> | |
| </div> | |
| </section> | |
| {/* Footer */} | |
| <footer className="pt-8 border-t border-zinc-800 text-center"> | |
| <p className="text-xs text-zinc-700 mt-2"> | |
| This project was developed as part of the Artificial Intelligence curriculum | |
| </p> | |
| </footer> | |
| </div> | |
| </div> | |
| ); | |
| }; | |
| export default GroupInfo; | |