sqrtspace-experiments/experiments/maze_solver/SimpleDemo.cs
2025-07-20 03:56:21 -04:00

39 lines
1.7 KiB
C#

using System;
using System.Diagnostics;
class SimpleDemo
{
static void Main()
{
Console.WriteLine("=== Space-Time Tradeoff Demo ===\n");
// Create a simple 30x30 maze
int size = 30;
var maze = MazeGenerator.Generate(size, size);
// Run BFS (uses more memory, less time)
Console.WriteLine("1. BFS (O(n) space):");
var sw1 = Stopwatch.StartNew();
var bfsResult = MazeSolver.BFS(maze);
sw1.Stop();
Console.WriteLine($" Time: {sw1.ElapsedMilliseconds}ms");
Console.WriteLine($" Memory: {bfsResult.MemoryUsage} bytes\n");
// Run memory-limited algorithm (uses less memory, more time)
Console.WriteLine("2. Memory-Limited DFS (O(√n) space):");
var sw2 = Stopwatch.StartNew();
int memLimit = (int)Math.Sqrt(size * size);
var limitedResult = SpaceEfficientMazeSolver.MemoryLimitedDFS(maze, memLimit);
sw2.Stop();
Console.WriteLine($" Time: {sw2.ElapsedMilliseconds}ms");
Console.WriteLine($" Memory: {limitedResult.MemoryUsage} bytes");
Console.WriteLine($" Nodes explored: {limitedResult.NodesExplored}");
// Show the tradeoff
Console.WriteLine("\n=== Analysis ===");
Console.WriteLine($"Memory reduction: {(1.0 - (double)limitedResult.MemoryUsage / bfsResult.MemoryUsage) * 100:F1}%");
Console.WriteLine($"Time increase: {((double)sw2.ElapsedMilliseconds / sw1.ElapsedMilliseconds - 1) * 100:F1}%");
Console.WriteLine("\nThis demonstrates Williams' theoretical result:");
Console.WriteLine("We can simulate time-bounded algorithms with ~√(t) space!");
}
}