Be the first to rate this file! 65 downloads (last 30 days) File Size: 256.25 KB File ID: #20504

Submodular Function Optimization

by Andreas Krause

 

28 Jun 2008 (Updated 15 Nov 2008)

Code covered by the BSD License  

This toolbox provides functions for maximizing and minimizing submodular set functions.

Download Now | Watch this File

File Information
Description

Matlab Toolbox for Submodular Function Optimization (v 1.00)

By Andreas Krause (krausea@gmail.com).
Slides, videos and detailed references available at http://www.submodularity.org

Tested in MATLAB 7.0.1 (R14), 7.2.0 (R2006a), 7.4.0 (R2007a, MAC).

This toolbox provides functions for optimizing submodular set functions, i.e., functions that take a subset A of a finite ground set V to the real numbers, satisfying

$$F(A)+F(B)\geq F(A\cup B)+F(A\cap B)$$

It also presents several examples of applying submodular function optimization to important machine learning problems, such as clustering, inference in probabilistic models and experimental design. There is a demo script: sfo_tutorial.m

Some information on conventions:

All algorithms will use function objects (see sfo_tutorial.m for examples). For example, to measure variance reduction in a Gaussian model, call
  F = sfo_fn_varred(sigma,V)
where sigma is the covariance matrix and V is the ground set, e.g., 1:size(sigma,1) They will also take an index set V, and A must be a subset of V.

Implemented algorithms:

1) Minimization:

* sfo_min_norm_point: Fujishige's minimum-norm-point algorithm for minimizing general submodular functions
* sfo_queyranne: Queyranne's algorithm for minimizing symmetric submodular functions
* sfo_sssp: Submodular-supermodular procedure of Narasimhan & Bilmes for minimizing the difference of two submodular functions
* sfo_s_t_min_cut: For solving min F(A) s.t. s in A, t not in A
* sfo_minbound: Return an online bound on the minimum solution
* sfo_greedy_splitting: Greedy splitting algorithm for clustering of Zhao et al

2) Maximization:

* sfo_polyhedrongreedy: For solving an LP over the submodular polytope
* sfo_greedy_lazy: The greedy algorithm for constrained maximization / coverage using lazy evaluations
* sfo_greedy_welfare: The greedy algorithm for solving allocation problems
* sfo_cover: Greedy coverage algorithm using lazy evaluations
* sfo_celf: The CELF algorithm of Leskovec et al. for budgeted
      maximization
* sfo_saturate: The _SATURATE_ algorithm of Krause et al. for robust optimization of submodular functions
* sfo_max_dca_lazy: The Data Correcting algorithm of Goldengorin et al. for maximizing general (not necessarily nondecreasing) submodular functions
* sfo_maxbound: Return an online bound on the maximum solution
* sfo_pspiel: pSPIEL algorithm for trading off information and
      communication cost
* sfo_pspiel_orienteering: pSPIEL algorithm for submodular orienteering
* sfo_balance: eSPASS algorithm for simultaneous placement and balanced scheduling

3) Miscellaneous

* sfo_lovaszext: Computes the Lovasz extension for a submodular function
* sfo_mi_cluster: Example clustering algorithm using both maximization and minimization
* sfo_pspiel_get_path: Convert a tree into a path using the MST heuristic algorithm
* sfo_pspiel_get_cost: Compute the Steiner cost of a tree / path

4) Submodular functions:

* sfo_fn_cutfun: Cut function
* sfo_fn_detect: Outbreak detection / facility location
* sfo_fn_entropy: Entropy of Gaussian random variables
* sfo_fn_mi: Gaussian mutual information
* sfo_fn_varred: Variance reduction (truncatable, for use in SATURATE)
* sfo_fn_example: Two-element submodular function example from tutorial slides
* sfo_fn_iwata: Iwata's test function for testing minimization code
* sfo_fn_ising: Energy function for Ising model for image denoising
* sfo_fn_residual: For defining residual submodular functions

Here is an overview reference:

A. Krause, C. Guestrin. Near-optimal Observation Selection Using Submodular Functions. Survey paper, Proc. of 22nd Conference on Artificial Intelligence (AAAI) 2007 -- Nectar Track

MATLAB release MATLAB 7.2 (R2006a)
Zip File Content  
Published M Files Matlab Toolbox for Submodular Function Optimization (v 1.0)
Other Files
SFO/@sfo_fn/,
SFO/@sfo_fn/dec.m,
SFO/@sfo_fn/get.m,
SFO/@sfo_fn/inc.m,
SFO/@sfo_fn/set.m,
SFO/@sfo_fn/sfo_fn.m,
SFO/@sfo_fn/subsref.m,
SFO/@sfo_fn/trunc.m,
SFO/@sfo_fn_cutfun/,
SFO/@sfo_fn_cutfun/sfo_fn_cutfun.m,
SFO/@sfo_fn_detect/,
SFO/@sfo_fn_detect/inc.m,
SFO/@sfo_fn_detect/init.m,
SFO/@sfo_fn_detect/sfo_fn_detect.m,
SFO/@sfo_fn_entropy/,
SFO/@sfo_fn_entropy/inc.m,
SFO/@sfo_fn_entropy/init.m,
SFO/@sfo_fn_entropy/sfo_fn_entropy.m,
SFO/@sfo_fn_example/,
SFO/@sfo_fn_example/sfo_fn_example.m,
SFO/@sfo_fn_ising/,
SFO/@sfo_fn_ising/sfo_fn_ising.m,
SFO/@sfo_fn_iwata/,
SFO/@sfo_fn_iwata/sfo_fn_iwata.m,
SFO/@sfo_fn_mi/,
SFO/@sfo_fn_mi/inc.m,
SFO/@sfo_fn_mi/init.m,
SFO/@sfo_fn_mi/sfo_fn_mi.m,
SFO/@sfo_fn_residual/,
SFO/@sfo_fn_residual/dec.m,
SFO/@sfo_fn_residual/inc.m,
SFO/@sfo_fn_residual/init.m,
SFO/@sfo_fn_residual/sfo_fn_residual.m,
SFO/@sfo_fn_trunc/,
SFO/@sfo_fn_trunc/dec.m,
SFO/@sfo_fn_trunc/inc.m,
SFO/@sfo_fn_trunc/init.m,
SFO/@sfo_fn_trunc/sfo_fn_trunc.m,
SFO/@sfo_fn_varred/,
SFO/@sfo_fn_varred/inc.m,
SFO/@sfo_fn_varred/init.m,
SFO/@sfo_fn_varred/sfo_fn_varred.m,
SFO/@sfo_fn_varred/trunc.m,
SFO/@sfo_fn_varred_trunc/,
SFO/@sfo_fn_varred_trunc/inc.m,
SFO/@sfo_fn_varred_trunc/init.m,
SFO/@sfo_fn_varred_trunc/sfo_fn_varred_trunc.m,
SFO/@sfo_fn_welfare/,
SFO/@sfo_fn_welfare/inc.m,
SFO/@sfo_fn_welfare/init.m,
SFO/@sfo_fn_welfare/partition.m,
SFO/@sfo_fn_welfare/sfo_fn_welfare.m,
SFO/@sfo_fn_wrapper/,
SFO/@sfo_fn_wrapper/init.m,
SFO/@sfo_fn_wrapper/sfo_fn_wrapper.m,
SFO/html/,
SFO/html/sfo_tutorial_pub.png,
SFO/html/sfo_tutorial_pub_01.png,
SFO/html/sfo_tutorial_pub_02.png,
SFO/html/sfo_tutorial_pub_03.png,
SFO/html/sfo_tutorial_pub_04.png,
SFO/html/sfo_tutorial_pub_05.png,
SFO/html/sfo_tutorial_pub_06.png,
SFO/html/sfo_tutorial_pub_07.png,
SFO/html/sfo_tutorial_pub_08.png,
SFO/html/sfo_tutorial_pub_09.png,
SFO/html/sfo_tutorial_pub_10.png,
SFO/html/sfo_tutorial_pub_11.png,
SFO/html/sfo_tutorial_pub_12.png,
SFO/html/sfo_tutorial_pub_eq129486.png,
SFO/html/sfo_tutorial_pub_eq190777.png,
SFO/html/sfo_tutorial_pub_eq22457.png,
SFO/html/sfo_tutorial_pub_eq22793.png,
SFO/html/sfo_tutorial_pub_eq22919.png,
SFO/html/sfo_tutorial_pub_eq2328.png,
SFO/html/sfo_tutorial_pub_eq2330.png,
SFO/html/sfo_tutorial_pub_eq23872.png,
SFO/html/sfo_tutorial_pub_eq24352.png,
SFO/html/sfo_tutorial_pub_eq25884.png,
SFO/html/sfo_tutorial_pub_eq40729.png,
SFO/html/sfo_tutorial_pub_eq5967.png,
SFO/html/sfo_tutorial_pub_eq66030.png,
SFO/html/sfo_tutorial_pub_eq84272.png,
SFO/merced_data.mat,
SFO/private/,
SFO/private/sfo_pspiel_dijkstra.m,
SFO/private/sfo_pspiel_fixed_r.m,
SFO/private/sfo_pspiel_get_r_range.m,
SFO/private/sfo_pspiel_kmst.m,
SFO/private/sfo_pspiel_mst.m,
SFO/private/sfo_pspiel_pd.m,
SFO/private/sfo_pspiel_sp.m,
SFO/readme.txt,
SFO/sfo_balance.m,
SFO/sfo_celf.m,
SFO/sfo_charvector.m,
SFO/sfo_chol_downdate.m,
SFO/sfo_chol_update.m,
SFO/sfo_cover.m,
SFO/sfo_dist.m,
SFO/sfo_eval_maxvar.m,
SFO/sfo_greedy_lazy.m,
SFO/sfo_greedy_splitting.m,
SFO/sfo_greedy_welfare.m,
SFO/sfo_inv_downdate.m,
SFO/sfo_inv_update.m,
SFO/sfo_logdet.m,
SFO/sfo_lovaszext.m,
SFO/sfo_max_dca_lazy.m,
SFO/sfo_max_delta_lazy.m,
SFO/sfo_maxbound.m,
SFO/sfo_maxbound_welfare.m,
SFO/sfo_mi_cluster.m,
SFO/sfo_min_norm_point.m,
SFO/sfo_minbound.m,
SFO/sfo_plot_subgraph.m,
SFO/sfo_polyhedrongreedy.m,
SFO/sfo_pspiel.m,
SFO/sfo_pspiel_get_cost.m,
SFO/sfo_pspiel_get_path.m,
SFO/sfo_pspiel_orienteering.m,
SFO/sfo_queyranne.m,
SFO/sfo_s_t_mincut.m,
SFO/sfo_saturate.m,
SFO/sfo_setdiff_fast.m,
SFO/sfo_sssp.m,
SFO/sfo_tutorial.m,
SFO/sfo_tutorial_pub.m,
SFO/sfo_unique_fast.m
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Please login to add a comment or rating.
Updates
01 Jul 2008

Updated documentation (v.991)

15 Nov 2008

Changes in version 1.00:
  Added pSPIEL for informative path planning
  Added eSPASS for simultaneous placement and scheduling
  New convention for submodular functions (incremental computations, etc.) Much faster!

Tag Activity for this File
Tag Applied By Date/Time
optimization Andreas Krause 22 Oct 2008 10:07:50
submodular Andreas Krause 22 Oct 2008 10:07:50
combinatorial Andreas Krause 22 Oct 2008 10:07:50
submodularity Andreas Krause 22 Oct 2008 10:07:50
algorithms Andreas Krause 22 Oct 2008 10:07:51
 

MATLAB Central Terms of Use

NOTICE: Any content you submit to MATLAB Central, including personal information, is not subject to the protections which may be afforded information collected under other sections of The MathWorks, Inc. Web site. You are entirely responsible for all content that you upload, post, e-mail, transmit or otherwise make available via MATLAB Central. The MathWorks does not control the content posted by visitors to MATLAB Central and, does not guarantee the accuracy, integrity, or quality of such content. Under no circumstances will The MathWorks be liable in any way for any content not authored by The MathWorks, or any loss or damage of any kind incurred as a result of the use of any content posted, e-mailed, transmitted or otherwise made available via MATLAB Central. Read the complete Terms prior to use.

Contact us at files@mathworks.com