AdjacencyMatrix
	EdmondsKarp(AdjacencyMatrix& adj,
		int s,
		int t)
	{
		AdjacencyMatrix flow(adj.size());
		adj.Print();

		do
		{
			AdjacencyMatrix residual = GetResidual(adj, flow);
			cout << "Flow:" << endl; flow.Print();
			cout << "Residual:" << endl; residual.Print();
			AdjacencyMatrix path(residual.size());
			if(AugmentingPath(path, residual, s, t))
			{
				cout << "Path:" << endl; path.Print();
				updateFlow(flow, path, s, t);
			}
			else
			{
				break;
			}
		}
		while(1);

		return flow;
	}
Beispiel #2
0
FlowExaminer::FlowExaminer(Project_sV *project, QWidget *parent) :
    QDialog(parent),
    ui(new Ui::FlowExaminer),
    m_project(project),
    m_flowLR(NULL),
    m_flowRL(NULL)
{
    ui->setupUi(this);
//    ui->leftFrame->trackMouse(true);
//    ui->rightFrame->trackMouse(true);

    connect(ui->leftFrame, SIGNAL(signalMouseMoved(float,float)), this, SLOT(slotMouseMoved(float,float)));
    connect(ui->rightFrame, SIGNAL(signalMouseMoved(float,float)), this, SLOT(slotMouseMoved(float,float)));
    connect(ui->bClose, SIGNAL(clicked()), this, SLOT(close()));
    
    connect(ui->amplification, SIGNAL(valueChanged(int)),this, SLOT(newAmplification(int)));
    
    connect(this, SIGNAL(frameChanged()),this, SLOT(updateFlow()));
}
Beispiel #3
0
void FlowExaminer::loadFlow()
{	
    if (m_flowLR != NULL) {
        delete m_flowLR;
        m_flowLR = NULL;
    }
    if (m_flowRL != NULL) {
        delete m_flowRL;
        m_flowRL = NULL;
    }
    try {
        m_flowLR = m_project->requestFlow(frame, frame+1, FrameSize_Orig);
        m_flowRL = m_project->requestFlow(frame+1, frame, FrameSize_Orig);
        ui->leftFrame->loadImage(m_project->frameSource()->frameAt(frame, FrameSize_Orig));
        ui->rightFrame->loadImage(m_project->frameSource()->frameAt(frame+1, FrameSize_Orig));        
        ui->leftFlow->loadImage(FlowVisualization_sV::colourizeFlow(m_flowLR, FlowVisualization_sV::HSV,m_boost));
        ui->rightFlow->loadImage(FlowVisualization_sV::colourizeFlow(m_flowRL, FlowVisualization_sV::HSV,m_boost));
        emit updateFlow();
    } catch (FlowBuildingError &err) { }

    //repaint();
}