{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as pp" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def dijkstra( adj, s, d ):\n", "\n", " n = adj.shape[ 0 ]\n", "\n", " dist = np.full( ( n, ), np.inf )\n", " dist[ s ] = 0.0\n", " prev = np.full( ( n, ), -1, dtype = int )\n", "\n", " Q = list( range( n ) )\n", "\n", " while len( Q ) > 0:\n", "\n", " u = Q[ 0 ]\n", " for q in Q:\n", " if dist[ q ] < dist[ u ]:\n", " u = q\n", " Q.remove( u )\n", "\n", " if u == d:\n", " break\n", "\n", " for i in range( n ):\n", " if not i in Q:\n", " continue\n", "\n", " d = dist[ u ] + adj[ u, i ]\n", " if d < dist[ i ]:\n", " dist[ i ] = d\n", " prev[ i ] = u\n", " \n", " return dist, prev" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "adj = np.array(\n", " [\n", " [ 0.0 , 10.0, 3.0, 7.0 ],\n", " [ 10.0, 0.0, 6.0, np.inf ],\n", " [ 3.0, 6.0, 0.0, 2.0 ],\n", " [ 7.0, np.inf, 2.0, 0.0 ]\n", " ]\n", ")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(array([0., 9., 3., 5.]), array([-1, 2, 0, 2]))\n" ] } ], "source": [ "print( dijkstra( adj, 0, 3 ) )" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "N = 100\n", "\n", "pts = []\n", "for i in range( N ):\n", "\n", " repeat = True\n", "\n", " while repeat:\n", " p = np.random.normal( size = ( 2, ) ) * 100\n", " repeat = False\n", " for q in pts:\n", " if np.linalg.norm( p - q ) <= 20:\n", " repeat = True\n", " break\n", "\n", " pts.append( p )" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for p in pts:\n", " pp.scatter( p[ 0 ], p[ 1 ] )\n", "\n", "pp.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }