39 lines
1.7 KiB
C#
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!");
|
|
}
|
|
} |