www.pudn.com > geosteiner-3.1.zip > bsd.h


/***********************************************************************

	File:	bsd.h
	Rev:	a-2
	Date:	02/28/2001

	Copyright (c) 1998, 2001 by David M. Warme

************************************************************************

	Declarations for the Bottleneck Steiner Distance
	implementation.

************************************************************************

	Modification Log:

	a-1:	10/04/98	warme
		: Created.
	a-2:	02/28/2001	warme
		: Changes for 3.1 release.  Hide certain interfaces
		:  in the .c file where they belong.

************************************************************************/

#ifndef	BSD_H
#define	BSD_H

#include "steiner.h"


/*
 * A structure to encapsulate all the data we store for rapidly
 * computing the BSD of two terminals.
 */

struct bsd {
	int			method;	/* Implementation method to use */

	/* Stuff common to all implementations. */
	int			n;		/* Number of terminals */
	struct edge *		mst_edges;	/* List of MST edges */

	/* Stuff for the Lower Triangular matrix of edge #'s implementation. */
	int16u *	ematrix;	/* The full matrix */

	/* Stuff for the row-cache implementation. */
};


extern dist_t		bsd (struct bsd *, int, int);
extern struct bsd *	compute_bsd (int, struct edge *, int);
extern void		shutdown_bsd (struct bsd *);

#endif