Code covered by the BSD License  

Highlights from
Heuristic Algorithm for finding Maximum Independent Set

5.0

5.0 | 1 rating Rate this file 12 Downloads (last 30 days) File Size: 2.46 KB File ID: #28470
image thumbnail

Heuristic Algorithm for finding Maximum Independent Set

by Roberto Olmi

 

13 Aug 2010 (Updated 23 Oct 2010)

Outputs the independent set of maximum cardinality. Runs in O(n^2) time, n=graph size.

| Watch this File

File Information
Description

findMIS is an heuristic algorithm for solving Maximum Independent Set problem (MIS).
An independent set of a graph is a subset of vertices in which no two vertices are
adjacent. Given a set of vertices, the maximum independent set problem calls
for finding the independent set of maximum cardinality.

Algorithm run in O(n^2) time, where n is the number of vertices (worst case).
Experimentally: time = 8.1e-007*n^2 + 2.2e-005*n + 0.00012 seconds, (see screenshot)

The algorithm has been independently developped but is similar to:
Balaji, Swaminathan, Kannan, "A Simple Algorithm to Optimize
Maximum Independent Set", Advanced Modeling and Optimization, Volume 12, Number 1, 2010
 
Notation:
The neighborhood of v is defined by N(v) ={u in V such that u is adjacent to v}
The DEGREE of a vertex v in V, denoted by deg(v) and is defined by the number of
neighbors of v.
The SUPPORT of a vertex v in V is defined by the sum of the degree of the vertices
which are adjacent to v, i.e., support(v) = s(v) = sum( deg(u) ) where u are all
vertices in N(v).
 
INPUTS:
"AD" is the adjacency matrix. It must be of logical values!
"priority" is used to break the ties (parity) situations that occur when more than one maximum independent set can be selected. Consider for example the trivial case of two nodes connected by one edge: there are two possible maximum independent sets. By using priority you can decide which vertex has to selected first. Try for example:
x=findMIS(logical([0 1; 1 0]),[1 2]) %Higher priority to node 1
and
x=findMIS(logical([0 1; 1 0]),[2 1]) %Higher priority to node 2
 
OUTPUTS:
x is an binary array where x(i)=1 if vertex i belongs to the Maximum independent set
and x(i)=0 if belongs to the Minimum vertex cover.

MATLAB release MATLAB 7.6 (R2008a)
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (1)
15 Apr 2012 lisa  
Please login to add a comment or rating.
Updates
23 Oct 2010

Added some explanation about the input "priority".

Tag Activity for this File
Tag Applied By Date/Time
independent set Roberto Olmi 13 Aug 2010 11:49:44
vertex cover Roberto Olmi 13 Aug 2010 11:49:44
clique Roberto Olmi 13 Aug 2010 11:49:44
heuristic Roberto Olmi 13 Aug 2010 11:49:44
greedy Roberto Olmi 13 Aug 2010 11:49:44
graph Roberto Olmi 13 Aug 2010 11:49:44
optimization Roberto Olmi 13 Aug 2010 11:49:44
constrained optimization Roberto Olmi 13 Aug 2010 11:49:44
maximum independent set Roberto Olmi 13 Aug 2010 11:49:44
minimum vertex cover Roberto Olmi 13 Aug 2010 11:49:44

Contact us at files@mathworks.com