# swNoData: Simulate pixel labels using the Swendsen-Wang algorithm. In bayesImageS: Bayesian Methods for Image Segmentation using a Potts Model

## Description

The algorithm of Swendsen & Wang (1987) forms clusters of neighbouring pixels, then updates all of the labels within a cluster to the same value. When simulating from the prior, such as a Potts model without an external field, this algorithm is very efficient.

## Usage

 `1` ```swNoData(beta, k, neighbors, blocks, niter = 1000, random = TRUE) ```

## Arguments

 `beta` The inverse temperature parameter of the Potts model. `k` The number of unique labels. `neighbors` A matrix of all neighbors in the lattice, one row per pixel. `blocks` A list of pixel indices, dividing the lattice into independent blocks. `niter` The number of iterations of the algorithm to perform. `random` Whether to initialize the labels using random or deterministic starting values.

## Value

A list containing the following elements:

`alloc`

An n by k matrix containing the number of times that pixel i was allocated to label j.

`z`

An `(n+1)` by k matrix containing the final sample from the Potts model after niter iterations of Swendsen-Wang.

`sum`

An `niter` by 1 matrix containing the sum of like neighbors, i.e. the sufficient statistic of the Potts model, at each iteration.

## References

Swendsen, R. H. & Wang, J.-S. (1987) "Nonuniversal critical dynamics in Monte Carlo simulations" Physical Review Letters 58(2), 86–88, DOI: 10.1103/PhysRevLett.58.86

## Examples

 ```1 2 3 4 5 6``` ```# Swendsen-Wang for a 2x2 lattice neigh <- matrix(c(5,2,5,3, 1,5,5,4, 5,4,1,5, 3,5,2,5), nrow=4, ncol=4, byrow=TRUE) blocks <- list(c(1,4), c(2,3)) res.sw <- swNoData(0.7, 3, neigh, blocks, niter=200) res.sw\$z res.sw\$sum[200] ```

### Example output

```     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    1    0    0
[3,]    1    0    0
[4,]    1    0    0
[5,]    0    0    0
[1] 4
```

bayesImageS documentation built on Feb. 2, 2018, 5:03 p.m.