Nothing
## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----setup--------------------------------------------------------------------
library(rviewgraph)
oldgui = rViewGraph(sample(1:10,10,TRUE),sample(1:10,10,TRUE))
is.null(oldgui)
if (interactive() && !is.null(oldgui))
{
oldgui.stop()
oldgui.hide()
}
v = vg()
is.null(v)
## ----prob---------------------------------------------------------------------
edges = function(g)
{
dim(g$getEdges())[1] / 2
}
logProb = function(g,a)
{
-edges(g)*a
}
## ----flip---------------------------------------------------------------------
flip = function(g,x,y)
{
if (g$connects(x,y))
g$disconnect(x,y)
else
g$connect(x,y)
}
## ----step---------------------------------------------------------------------
step = function(g, a, t = 1)
{
# Find the probability of the current graph.
delta = logProb(g,a)
# Choose a pair of random vertices to flip, and display them.
x = sample(g$getVertices(),2,replace=FALSE)
g$colour(x,"red")
Sys.sleep(t/3)
# Then make the flip.
flip(g,x[1],x[2])
Sys.sleep(t/3)
# Find the ratio of the probabilities of the proposed new graph
# and the previous incumbent.
delta = logProb(g,a) - delta
# Then with probability equal to the minimum of 1 and this ratio
# accept the new graph by doing nothing, otherwise reject it by
# undoing the flip.
if (log(runif(1)) > delta)
flip(g,x[1],x[2])
# Reset the colours, and pause before the next step.
g$colour(x)
Sys.sleep(t/3)
}
## -----------------------------------------------------------------------------
# To make the simulation reproducible.
set.seed(1)
n = 20
v$add(1:n)
pen = 0
if (interactive())
{
wait = 1
s = 50
} else
{
wait = 0
s = 1000
for (i in 1:s)
step(v,pen,wait)
}
medge = 0
for (i in 1:s)
{
step(v,pen,wait)
medge = medge + edges(v)
}
c(medge/s, n*(n-1)/4)
## -----------------------------------------------------------------------------
pen = 1
medge = 0
for (i in 1:s)
{
step(v,pen,wait)
medge = medge + edges(v)
}
medge/s
## -----------------------------------------------------------------------------
pen = -1
medge = 0
for (i in 1:s)
{
step(v,pen,wait)
medge = medge + edges(v)
}
medge/s
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.