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; }
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())); }
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(); }