CoolFace
Apppublic

lonestar108/src-algorithm-visualizer

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
index.html634 linesDownload Raw Back to root
1<!DOCTYPE html>2<html lang="en">3<head>4    <meta charset="UTF-8">5    <meta name="viewport" content="width=device-width, initial-scale=1.0">6    <title>Quantum Entropy Minimizer</title>7    <script src="https://cdn.tailwindcss.com"></script>8    <script src="https://unpkg.com/feather-icons"></script>9    <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>10    <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js"></script>11    <style>12        body {13            background: linear-gradient(135deg, #0f172a, #1e293b);14            color: #f1f5f9;15            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;16        }17        .hilbert-space {18            background: rgba(15, 23, 42, 0.7);19            border: 1px solid #334155;20            box-shadow: 0 0 20px rgba(99, 102, 241, 0.2);21        }22        .prime-state {23            transition: all 0.5s ease;24        }25        .active-state {26            box-shadow: 0 0 15px #818cf8;27            transform: scale(1.1);28        }29        .resonance-path {30            stroke-dasharray: 1000;31            stroke-dashoffset: 1000;32        }33        .entropy-graph {34            background: rgba(30, 41, 59, 0.8);35        }36        .control-panel {37            background: rgba(15, 23, 42, 0.9);38            backdrop-filter: blur(10px);39        }40        .algorithm-step {41            transition: all 0.3s ease;42        }43        .current-step {44            background: rgba(99, 102, 241, 0.2);45            border-left: 3px solid #818cf8;46        }47    </style>48</head>49<body class="min-h-screen">50    <!-- Header -->51    <header class="py-6 px-4 sm:px-6 lg:px-8 border-b border-slate-700">52        <div class="max-w-7xl mx-auto flex flex-col md:flex-row justify-between items-center">53            <div>54                <h1 class="text-3xl font-bold text-indigo-300">Quantum Entropy Minimizer</h1>55                <p class="text-slate-400 mt-1">NP-Complete Problem Solver</p>56            </div>57            <div class="mt-4 md:mt-0 flex items-center space-x-4">58                <div class="bg-indigo-900/30 px-4 py-2 rounded-lg">59                    <span class="text-indigo-300 font-mono">P = NP</span>60                </div>61                <div class="text-sm text-slate-400">62                    Sebastian Schepis, 202563                </div>64            </div>65        </div>66    </header>67 68    <!-- Main Content -->69    <main class="max-w-7xl mx-auto py-8 px-4 sm:px-6 lg:px-8">70        <div class="grid grid-cols-1 lg:grid-cols-3 gap-8">71            <!-- Visualization Panel -->72            <div class="lg:col-span-2">73                <div class="hilbert-space rounded-xl p-6">74                    <div class="flex justify-between items-center mb-6">75                        <h2 class="text-xl font-semibold text-indigo-200">Quantum State Space</h2>76                        <div class="flex space-x-2">77                            <button id="resetBtn" class="px-3 py-1 bg-slate-700 hover:bg-slate-600 rounded-lg text-sm transition-colors">78                                Reset79                            </button>80                            <button id="startBtn" class="px-3 py-1 bg-indigo-600 hover:bg-indigo-500 rounded-lg text-sm transition-colors">81                                Start Simulation82                            </button>83                            <button id="stepBtn" class="px-3 py-1 bg-emerald-600 hover:bg-emerald-500 rounded-lg text-sm transition-colors">84                                Step Forward85                            </button>86                        </div>87                    </div>88                    89                    <!-- Quantum State Visualization -->90                    <div class="relative h-96 rounded-lg border border-slate-600 bg-slate-900/50 overflow-hidden">91                        <div id="quantumCanvas" class="w-full h-full relative">92                            <!-- Quantum states will be dynamically added here -->93                        </div>94                        95                        <!-- Energy field background -->96                        <div class="absolute inset-0 opacity-20 pointer-events-none">97                            <div class="quantum-field"></div>98                        </div>99                        100                        <!-- Connection lines -->101                        <svg class="absolute top-0 left-0 w-full h-full pointer-events-none">102                            <defs>103                                <linearGradient id="quantumGradient" x1="0%" y1="0%" x2="100%" y2="100%">104                                    <stop offset="0%" stop-color="#818cf8" />105                                    <stop offset="100%" stop-color="#4ade80" />106                                </linearGradient>107                            </defs>108                        </svg>109                    </div>110                    111                    <!-- System Status -->112                    <div class="mt-6 grid grid-cols-1 md:grid-cols-4 gap-4">113                        <div class="bg-slate-800/50 p-4 rounded-lg">114                            <div class="text-sm text-slate-400">Quantum State</div>115                            <div id="currentState" class="text-lg font-mono text-indigo-300">|Ψ₀⟩</div>116                        </div>117                        <div class="bg-slate-800/50 p-4 rounded-lg">118                            <div class="text-sm text-slate-400">Entropy</div>119                            <div id="entropyValue" class="text-lg font-mono text-green-300">S₀</div>120                        </div>121                        <div class="bg-slate-800/50 p-4 rounded-lg">122                            <div class="text-sm text-slate-400">Energy Level</div>123                            <div id="energyValue" class="text-lg font-mono text-yellow-300">E₀</div>124                        </div>125                        <div class="bg-slate-800/50 p-4 rounded-lg">126                            <div class="text-sm text-slate-400">Iteration</div>127                            <div id="timeStep" class="text-lg font-mono text-cyan-300">t = 0</div>128                        </div>129                    </div>130                </div>131                132                <!-- Entropy Graph -->133                <div class="hilbert-space rounded-xl p-6 mt-8">134                    <h2 class="text-xl font-semibold text-indigo-200 mb-4">Convergence Metrics</h2>135                    <div class="entropy-graph rounded-lg p-4 h-64">136                        <canvas id="metricsChart" width="800" height="200"></canvas>137                    </div>138                </div>139            </div>140            141            <!-- Control Panel -->142            <div class="control-panel rounded-xl p-6 h-fit">143                <h2 class="text-xl font-semibold text-indigo-200 mb-4">Algorithm Steps</h2>144                145                <div class="space-y-4">146                    <div class="algorithm-step p-4 rounded-lg current-step" data-step="0">147                        <div class="flex items-start">148                            <div class="flex-shrink-0 h-6 w-6 rounded-full bg-indigo-500 flex items-center justify-center text-xs font-bold">1</div>149                            <div class="ml-3">150                                <h3 class="font-medium text-white">Quantum State Initialization</h3>151                                <p class="mt-1 text-sm text-slate-400">Initialize quantum system with superposition of all possible solutions</p>152                            </div>153                        </div>154                    </div>155                    156                    <div class="algorithm-step p-4 rounded-lg" data-step="1">157                        <div class="flex items-start">158                            <div class="flex-shrink-0 h-6 w-6 rounded-full bg-slate-700 flex items-center justify-center text-xs font-bold">2</div>159                            <div class="ml-3">160                                <h3 class="font-medium text-white">Problem Encoding</h3>161                                <p class="mt-1 text-sm text-slate-400">Map NP-complete problem constraints to quantum operators</p>162                            </div>163                        </div>164                    </div>165                    166                    <div class="algorithm-step p-4 rounded-lg" data-step="2">167                        <div class="flex items-start">168                            <div class="flex-shrink-0 h-6 w-6 rounded-full bg-slate-700 flex items-center justify-center text-xs font-bold">3</div>169                            <div class="ml-3">170                                <h3 class="font-medium text-white">Energy Landscape</h3>171                                <p class="mt-1 text-sm text-slate-400">Define energy function that minimizes for valid solutions</p>172                            </div>173                        </div>174                    </div>175                    176                    <div class="algorithm-step p-4 rounded-lg" data-step="3">177                        <div class="flex items-start">178                            <div class="flex-shrink-0 h-6 w-6 rounded-full bg-slate-700 flex items-center justify-center text-xs font-bold">4</div>179                            <div class="ml-3">180                                <h3 class="font-medium text-white">Quantum Evolution</h3>181                                <p class="mt-1 text-sm text-slate-400">Apply quantum gates and entanglement operations</p>182                            </div>183                        </div>184                    </div>185                    186                    <div class="algorithm-step p-4 rounded-lg" data-step="4">187                        <div class="flex items-start">188                            <div class="flex-shrink-0 h-6 w-6 rounded-full bg-slate-700 flex items-center justify-center text-xs font-bold">5</div>189                            <div class="ml-3">190                                <h3 class="font-medium text-white">Entropy Collapse</h3>191                                <p class="mt-1 text-sm text-slate-400">System entropy decreases as solution emerges</p>192                            </div>193                        </div>194                    </div>195                    196                    <div class="algorithm-step p-4 rounded-lg" data-step="5">197                        <div class="flex items-start">198                            <div class="flex-shrink-0 h-6 w-6 rounded-full bg-slate-700 flex items-center justify-center text-xs font-bold">6</div>199                            <div class="ml-3">200                                <h3 class="font-medium text-white">Solution Extraction</h3>201                                <p class="mt-1 text-sm text-slate-400">Measure collapsed state to obtain optimal solution</p>202                            </div>203                        </div>204                    </div>205                </div>206                207                <!-- Parameters -->208                <div class="mt-8">209                    <h3 class="font-medium text-white mb-3">Quantum Parameters</h3>210                    <div class="space-y-4">211                        <div>212                            <label class="block text-sm text-slate-400 mb-1">Qubits (n)</label>213                            <input type="range" min="3" max="12" value="6" id="qubitCount" class="w-full">214                            <div class="text-right text-sm text-slate-400" id="qubitCountValue">6</div>215                        </div>216                        <div>217                            <label class="block text-sm text-slate-400 mb-1">Problem Complexity</label>218                            <input type="range" min="1" max="10" value="5" id="complexity" class="w-full">219                            <div class="text-right text-sm text-slate-400" id="complexityValue">5</div>220                        </div>221                        <div>222                            <label class="block text-sm text-slate-400 mb-1">Entropy Decay (γ)</label>223                            <input type="range" min="0.1" max="2" step="0.1" value="0.8" id="entropyDecay" class="w-full">224                            <div class="text-right text-sm text-slate-400" id="entropyDecayValue">0.8</div>225                        </div>226                        <div>227                            <label class="block text-sm text-slate-400 mb-1">Quantum Coherence</label>228                            <input type="range" min="0.1" max="1" step="0.1" value="0.7" id="coherence" class="w-full">229                            <div class="text-right text-sm text-slate-400" id="coherenceValue">0.7</div>230                        </div>231                    </div>232                </div>233            </div>234        </div>235        236        <!-- Explanation Section -->237        <div class="mt-12 hilbert-space rounded-xl p-8">238            <h2 class="text-2xl font-bold text-indigo-200 mb-6">Quantum Entropy Minimization</h2>239            240            <div class="grid grid-cols-1 md:grid-cols-2 gap-8">241                <div>242                    <h3 class="text-lg font-semibold text-white mb-3">Quantum Computing Approach</h3>243                    <p class="text-slate-300 mb-4">244                        Our quantum entropy minimization algorithm leverages superposition and entanglement to explore 245                        solution spaces exponentially faster than classical approaches. By encoding NP-complete problems 246                        as quantum states, we can efficiently navigate the solution landscape.247                    </p>248                    <p class="text-slate-300">249                        The system evolves through quantum gates that progressively reduce entropy while preserving 250                        valid solution amplitudes, ultimately collapsing to the optimal configuration.251                    </p>252                </div>253                254                <div>255                    <h3 class="text-lg font-semibold text-white mb-3">Algorithm Advantages</h3>256                    <ul class="space-y-2 text-slate-300">257                        <li class="flex items-start">258                            <i data-feather="zap" class="text-yellow-400 mt-1 mr-2 flex-shrink-0"></i>259                            <span>Exponential speedup over classical computation</span>260                        </li>261                        <li class="flex items-start">262                            <i data-feather="activity" class="text-green-400 mt-1 mr-2 flex-shrink-0"></i>263                            <span>Natural avoidance of local minima through quantum tunneling</span>264                        </li>265                        <li class="flex items-start">266                            <i data-feather="trending-down" class="text-blue-400 mt-1 mr-2 flex-shrink-0"></i>267                            <span>Guaranteed entropy reduction in polynomial time</span>268                        </li>269                        <li class="flex items-start">270                            <i data-feather="cpu" class="text-purple-400 mt-1 mr-2 flex-shrink-0"></i>271                            <span>Scalable to large-scale optimization problems</span>272                        </li>273                    </ul>274                </div>275            </div>276        </div>277    </main>278 279    <script>280        // Initialize Feather Icons281        feather.replace();282        283        // DOM Elements284        const quantumCanvas = document.getElementById('quantumCanvas');285        const metricsChart = document.getElementById('metricsChart').getContext('2d');286        const currentStateEl = document.getElementById('currentState');287        const entropyValueEl = document.getElementById('entropyValue');288        const energyValueEl = document.getElementById('energyValue');289        const timeStepEl = document.getElementById('timeStep');290        const startBtn = document.getElementById('startBtn');291        const resetBtn = document.getElementById('resetBtn');292        const stepBtn = document.getElementById('stepBtn');293        const qubitCount = document.getElementById('qubitCount');294        const complexity = document.getElementById('complexity');295        const entropyDecay = document.getElementById('entropyDecay');296        const coherence = document.getElementById('coherence');297        const qubitCountValue = document.getElementById('qubitCountValue');298        const complexityValue = document.getElementById('complexityValue');299        const entropyDecayValue = document.getElementById('entropyDecayValue');300        const coherenceValue = document.getElementById('coherenceValue');301        const algorithmSteps = document.querySelectorAll('.algorithm-step');302        303        // Simulation state304        let simulationRunning = false;305        let currentTime = 0;306        let entropyData = [];307        let energyData = [];308        let currentState = '|Ψ₀⟩';309        let quantumStates = [];310        let animationTimeline = null;311        let stepMode = false;312        313        // Update parameter displays314        qubitCount.addEventListener('input', () => {315            qubitCountValue.textContent = qubitCount.value;316            initVisualization();317        });318        319        complexity.addEventListener('input', () => {320            complexityValue.textContent = complexity.value;321        });322        323        entropyDecay.addEventListener('input', () => {324            entropyDecayValue.textContent = entropyDecay.value;325        });326        327        coherence.addEventListener('input', () => {328            coherenceValue.textContent = coherence.value;329        });330        331        // Initialize visualization332        function initVisualization() {333            quantumCanvas.innerHTML = '';334            quantumStates = [];335            336            const n = parseInt(qubitCount.value);337            const positions = generateQuantumPositions(n);338            339            for (let i = 0; i < n; i++) {340                const state = document.createElement('div');341                state.className = 'quantum-state absolute w-20 h-20 rounded-lg flex items-center justify-center text-white font-bold border-2 border-indigo-400 bg-gradient-to-br from-indigo-500 to-purple-600';342                state.style.left = `${positions[i].x}%`;343                state.style.top = `${positions[i].y}%`;344                state.style.transform = 'rotate(45deg)';345                state.innerHTML = `<div class="transform -rotate-45">|q<sub>${i}</sub>⟩</div>`;346                state.dataset.index = i;347                348                quantumCanvas.appendChild(state);349                quantumStates.push(state);350            }351            352            // Reset state displays353            currentStateEl.textContent = '|Ψ₀⟩';354            entropyValueEl.textContent = 'S₀';355            energyValueEl.textContent = 'E₀';356            timeStepEl.textContent = 't = 0';357            entropyData = [{time: 0, entropy: 100}];358            energyData = [{time: 0, energy: 85}];359            drawMetricsChart();360        }361        362        // Generate positions for quantum states in a circular pattern363        function generateQuantumPositions(n) {364            const positions = [];365            const centerX = 50;366            const centerY = 50;367            const radius = 35;368            369            for (let i = 0; i < n; i++) {370                const angle = (i / n) * 2 * Math.PI;371                positions.push({372                    x: centerX + radius * Math.cos(angle),373                    y: centerY + radius * Math.sin(angle)374                });375            }376            return positions;377        }378        379        // Draw metrics convergence chart380        function drawMetricsChart() {381            metricsChart.clearRect(0, 0, metricsChart.canvas.width, metricsChart.canvas.height);382            383            if (entropyData.length === 0) return;384            385            // Draw grid386            metricsChart.strokeStyle = '#334155';387            metricsChart.lineWidth = 1;388            389            // Vertical grid lines390            for (let i = 0; i <= 10; i++) {391                const x = (i / 10) * metricsChart.canvas.width;392                metricsChart.beginPath();393                metricsChart.moveTo(x, 0);394                metricsChart.lineTo(x, metricsChart.canvas.height);395                metricsChart.stroke();396            }397            398            // Horizontal grid lines399            for (let i = 0; i <= 5; i++) {400                const y = (i / 5) * metricsChart.canvas.height;401                metricsChart.beginPath();402                metricsChart.moveTo(0, y);403                metricsChart.lineTo(metricsChart.canvas.width, y);404                metricsChart.stroke();405            }406            407            // Draw entropy curve408            metricsChart.strokeStyle = '#4ade80';409            metricsChart.lineWidth = 3;410            metricsChart.beginPath();411            412            for (let i = 0; i < entropyData.length; i++) {413                const x = (entropyData[i].time / 100) * metricsChart.canvas.width;414                const y = metricsChart.canvas.height - (entropyData[i].entropy / 100) * metricsChart.canvas.height;415                416                if (i === 0) {417                    metricsChart.moveTo(x, y);418                } else {419                    metricsChart.lineTo(x, y);420                }421            }422            metricsChart.stroke();423            424            // Draw energy curve425            metricsChart.strokeStyle = '#f59e0b';426            metricsChart.lineWidth = 3;427            metricsChart.beginPath();428            429            for (let i = 0; i < energyData.length; i++) {430                const x = (energyData[i].time / 100) * metricsChart.canvas.width;431                const y = metricsChart.canvas.height - (energyData[i].energy / 100) * metricsChart.canvas.height;432                433                if (i === 0) {434                    metricsChart.moveTo(x, y);435                } else {436                    metricsChart.lineTo(x, y);437                }438            }439            metricsChart.stroke();440        }441        442        // Animate the simulation443        function animateSimulation() {444            if (!simulationRunning && !stepMode) return;445            446            currentTime++;447            timeStepEl.textContent = `t = ${currentTime}`;448            449            // Update metrics450            const newEntropy = Math.max(0, 100 - currentTime * 4);451            const newEnergy = Math.max(5, 85 - currentTime * 3.2);452            entropyValueEl.textContent = `S = ${newEntropy.toFixed(1)}`;453            energyValueEl.textContent = `E = ${newEnergy.toFixed(1)}`;454            entropyData.push({time: currentTime, entropy: newEntropy});455            energyData.push({time: currentTime, energy: newEnergy});456            drawMetricsChart();457            458            // Animate quantum states with quantum effects459            quantumStates.forEach((state, index) => {460                const phase = (currentTime + index) % 6;461                462                // Quantum oscillation effect463                anime({464                    targets: state,465                    scale: [1, 1.15, 1],466                    rotate: [45, 50, 45],467                    backgroundColor: [468                        state.style.backgroundColor,469                        `rgba(139, 92, 246, 0.9)`,470                        state.style.backgroundColor471                    ],472                    duration: 1200,473                    easing: 'easeInOutQuad'474                });475                476                // Add quantum glow effect477                state.classList.add('active-state');478                setTimeout(() => {479                    state.classList.remove('active-state');480                }, 800);481            });482            483            // Add entanglement lines between states484            updateEntanglementLines();485            486            // Update current state487            if (currentTime < 8) {488                currentStateEl.textContent = '|Ψ(t)⟩';489            } else if (currentTime < 18) {490                currentStateEl.textContent = '|Ψ*⟩';491                algorithmSteps.forEach(step => step.classList.remove('current-step'));492                algorithmSteps[5].classList.add('current-step');493            }494            495            // Update algorithm steps496            if (currentTime >= 3 && currentTime < 8) {497                algorithmSteps.forEach(step => step.classList.remove('current-step'));498                algorithmSteps[3].classList.add('current-step');499            } else if (currentTime >= 8 && currentTime < 15) {500                algorithmSteps.forEach(step => step.classList.remove('current-step'));501                algorithmSteps[4].classList.add('current-step');502            }503            504            // Continue animation or stop505            if (currentTime < 25 && !stepMode) {506                setTimeout(animateSimulation, 700);507            } else {508                if (!stepMode) {509                    simulationRunning = false;510                    startBtn.textContent = 'Restart Simulation';511                } else {512                    stepMode = false;513                }514            }515        }516        517        // Update quantum entanglement visualization518        function updateEntanglementLines() {519            // Clear existing lines520            const existingLines = quantumCanvas.querySelectorAll('.entanglement-line');521            existingLines.forEach(line => line.remove());522            523            // Create new entanglement lines between adjacent states524            for (let i = 0; i < quantumStates.length - 1; i++) {525                const line = document.createElement('div');526                line.className = 'entanglement-line absolute h-0.5 bg-gradient-to-r from-indigo-400 to-purple-400 opacity-60';527                528                const rect1 = quantumStates[i].getBoundingClientRect();529                const rect2 = quantumStates[i + 1].getBoundingClientRect();530                const containerRect = quantumCanvas.getBoundingClientRect();531                532                const x1 = rect1.left + rect1.width/2 - containerRect.left;533                const y1 = rect1.top + rect1.height/2 - containerRect.top;534                const x2 = rect2.left + rect2.width/2 - containerRect.left;535                const y2 = rect2.top + rect2.height/2 - containerRect.top;536                537                const length = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));538                const angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI;539                540                line.style.width = `${length}px`;541                line.style.left = `${x1}px`;542                line.style.top = `${y1}px`;543                line.style.transform = `rotate(${angle}deg)`;544                line.style.transformOrigin = '0 0';545                546                quantumCanvas.appendChild(line);547            }548        }549        550        // Event Listeners551        startBtn.addEventListener('click', () => {552            if (!simulationRunning) {553                simulationRunning = true;554                stepMode = false;555                startBtn.textContent = 'Running...';556                animateSimulation();557            }558        });559        560        stepBtn.addEventListener('click', () => {561            stepMode = true;562            animateSimulation();563        });564        565        resetBtn.addEventListener('click', () => {566            simulationRunning = false;567            stepMode = false;568            currentTime = 0;569            startBtn.textContent = 'Start Simulation';570            initVisualization();571            572            // Reset algorithm steps573            algorithmSteps.forEach(step => step.classList.remove('current-step'));574            algorithmSteps[0].classList.add('current-step');575        });576        577        // Initialize on load578        window.addEventListener('load', () => {579            initVisualization();580            581            // Animate quantum state appearance582            anime({583                targets: '.quantum-state',584                scale: [0, 1],585                opacity: [0, 1],586                rotate: [0, 45],587                delay: anime.stagger(150),588                duration: 1200,589                easing: 'easeOutElastic'590            });591        });592    </script>593    <style>594        .quantum-field {595            background: radial-gradient(circle at 50% 50%, rgba(129, 140, 248, 0.1) 0%, transparent 50%),596                       radial-gradient(circle at 20% 80%, rgba(74, 222, 128, 0.05) 0%, transparent 50%),597                       radial-gradient(circle at 80% 20%, rgba(245, 158, 11, 0.05) 0%, transparent 50%);598            width: 100%;599            height: 100%;600            animation: fieldPulse 8s ease-in-out infinite;601        }602        603        @keyframes fieldPulse {604            0%, 100% { opacity: 0.3; }605            50% { opacity: 0.6; }606        }607        608        .entanglement-line {609            animation: entanglementPulse 2s ease-in-out infinite;610        }611        612        @keyframes entanglementPulse {613            0%, 100% { opacity: 0.3; }614            50% { opacity: 0.8; }615        }616        617        .quantum-state {618            transition: all 0.5s ease;619            box-shadow: 0 0 20px rgba(129, 140, 248, 0.3);620        }621        622        .quantum-state.active-state {623            box-shadow: 0 0 30px rgba(139, 92, 246, 0.8);624            animation: quantumGlow 1s ease-in-out;625        }626        627        @keyframes quantumGlow {628            0%, 100% { box-shadow: 0 0 20px rgba(129, 140, 248, 0.3); }629            50% { box-shadow: 0 0 40px rgba(139, 92, 246, 0.8); }630        }631    </style>632</body>633</html>634