{ "cells": [ { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "import random\n", "#def nakljucni_sprehod_en2(matrika, k, l): #vrne seznam prvega prihoda do vozlišča l iz vozlišča k; sprehod je naključen\n", "# koraki = 0\n", "# d = matrika.nrows()\n", "# rd = range(0,d)\n", "# if k == l:\n", "# sez3 = []\n", "# for j in rd:\n", "# if matrika[k,j] != 0: #naredimo seznam sosednjih vozlišč\n", "# sez3.append(j)\n", "# else:\n", "# pass\n", "# c = random.choice(sez3) #naključno izbere v kako vozlišče se premaknemo\n", "# k = c #k označuje trenutno vozlišče\n", "# koraki += 1\n", "# while k != l:\n", "# sez3 = []\n", "# for j in rd:\n", "# if matrika[k,j] != 0: #naredimo seznam sosednjih vozlišč\n", "# sez3.append(j)\n", "# else:\n", "# pass\n", "# c = random.choice(sez3) #naključno izbere v kako vozlišče se premaknemo\n", "# k = c #k označuje trenutno vozlišče\n", "# sez3 = []\n", "# koraki += 1\n", "# else:\n", "# while k != l:\n", "# sez3 = []\n", "# for j in rd:\n", "# if matrika[k,j] != 0: #naredimo seznam sosednjih vozlišč\n", "# sez3.append(j)\n", "# else:\n", "# pass\n", "# c = random.choice(sez3) #naključno izbere v kako vozlišče se premaknemo\n", "# k = c #k označuje trenutno vozlišče\n", "# sez3 = []\n", "# koraki += 1\n", "# return koraki\n", "\n", "#def nakljucni_sprehod_med_k_in_ostalimi(matrika, k): #naredi nakjučni sprehod iz vozlišča k do vsakega; 1x\n", "# sez = []\n", "# d = matrika.nrows()\n", "# rd = range(0, d)\n", "# for i in rd:\n", "# sez.append(nakljucni_sprehod_en(matrika, k, i))\n", "# return sez\n", "\n", "#def n_nakljucnih_sprehodov2(matrika, n): #n-krat poženemo naključni sprehod iz vsakega vozlišča;\n", "# d = matrika.nrows()\n", "# sez = [0]*d\n", "# rd = range(0, d)\n", "# while n > 0:\n", "# for i in rd:\n", "# c = en_nsbc(matrika, i)\n", "# for i in rd:\n", "# sez[i] += c[i]\n", "# n -= 1\n", "# return sez\n", "\n", "def nakljucni_sprehod_en(matrika, k, l,koraki=0): #vrne seznam prvega prihoda do vozlišča l iz vozlišča k; sprehod je naključen\n", " d = matrika.nrows()\n", " rd = range(0,d)\n", " if k == l:\n", " sez3 = []\n", " for j in rd:\n", " if matrika[k,j] != 0: #naredimo seznam sosednjih vozlišč\n", " sez3.append(j)\n", " c = random.choice(sez3) #naključno izbere v kako vozlišče se premaknemo\n", " k = c #k označuje trenutno vozlišče\n", " return nakljucni_sprehod_en(matrika,k,l,1)\n", " else:\n", " while k != l:\n", " sez3 = []\n", " for j in rd:\n", " if matrika[k,j] != 0: #naredimo seznam sosednjih vozlišč\n", " sez3.append(j)\n", " c = random.choice(sez3) #naključno izbere v kako vozlišče se premaknemo\n", " k = c #k označuje trenutno vozlišče\n", " koraki += 1\n", " return koraki\n", "\n", "def en_nsbc(matrika, k): #naredi nakjučni sprehod iz vsakega vozlišča do vozlišča k ; 1x\n", " sez = []\n", " d = matrika.nrows()\n", " for i in range(0, d):\n", " sez.append(nakljucni_sprehod_en(matrika, i, k))\n", " return sez\n", "\n", "def n_nakljucnih_sprehodov(matrika, k, n): #iz vsakega vozlišča n-krat poženemo naključni sprehod, ki se konča v k;\n", " d = matrika.nrows()\n", " sez = [0]*d\n", " rd = range(0, d)\n", " for j in range(0, n):\n", " c = en_nsbc(matrika, k)\n", " for i in rd:\n", " sez[i] += c[i]\n", " return sez\n", "\n", "def nsbc_koncna(matrika, k, n):\n", " d = matrika.nrows()\n", " a = n * d\n", " s = n_nakljucnih_sprehodov(matrika, k, n)\n", " vsota = sum(s)\n", " return a/vsota\n" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.1", "language": "sagemath", "metadata": { "cocalc": { "description": "Open-source mathematical software system", "priority": 1, "url": "https://www.sagemath.org/" } }, "name": "sage-9.1", "resource_dir": "/ext/jupyter/kernels/sage-9.1" } }, "nbformat": 4, "nbformat_minor": 4 }