# Partitions in Matgraph

Many Matgraph functions work with partitions. For example, the `color` function returns a partition of the vertex set and `bipmatch` takes a partition as one of its arguments. Matgraph provides the `partition` type for working with partitions. In all cases, the partition is of the set [n]={1,2,...,n} for some n.

## Contents

## Creating partitions

The `partition` function is used to create a new partition. `partition(n)` creates a partition of the set [n] in which every element is in a part by itself. Alternatively, one can apply `partition` to a cell array in which the cells in the array contain the elements in each part.

p = partition(5) q = partition({[1 2 3],[4 6],[5]})

{ {1} {2} {3} {4} {5} } { {1,2,3} {4,6} {5} }

## Finding the part that contains a given element

If `p` is a partition and `k` is an integer, then `p(k)` returns the elements in the part of `p` that contains `k`.

disp(q(1))

1 2 3

## Merging parts

If `p` is a partition and `j` and `k` are integers, then `merge(p,j,k)` is a new partition formed from `p` by combining the parts that contain `j` and `k`.

q merge(q,1,4)

{ {1,2,3} {4,6} {5} } { {1,2,3,4,6} {5} }

## Meet and join

If `p` and `q` are partitions, then `p*q` and `p+q` are the meet and join of `p` and `q`, respectively.

p = partition({ [1 3 5], [2 4], [8 7], [6]}) q = partition({ [1 3 2], [4 5], [6 8], [7]}) p*q p+q

{ {1,3,5} {2,4} {6} {7,8} } { {1,2,3} {4,5} {6,8} {7} } { {1,3} {2} {4} {5} {6} {7} {8} } { {1,2,3,4,5} {6,7,8} }

## Extracting the parts

`parts(p)` returns a cell array in which each cell contains the elements of a part of `p`.

pts = parts(p); for k=1:length(pts) disp(['Part #', int2str(k), ' is ', int2str(pts{k})]) end

Part #1 is 1 3 5 Part #2 is 2 4 Part #3 is 6 Part #4 is 7 8

## See also

Here is a list of all the `partition` methods.

```
methods partition
```

Methods for class partition: array eq ne partition size check merge np parts subsref display mtimes nv plus