Example #1
0
	LPSolver(const VVT &A, const VT &b, const VT &c) : m(b.size()), n(c.size()), N(n + 1), B(m), D(m + 2, VT(n + 2)) {
		for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) D[i][j] = A[i][j];
		for (int i = 0; i < m; i++) {
			B[i] = n + i;
			D[i][n] = -1;
			D[i][n + 1] = b[i];
		}
		for (int j = 0; j < n; j++) {
			N[j] = j;
			D[m][j] = -c[j];
		}
		N[n] = -1;
		D[m + 1][n] = 1;
	}
set<VT> LCSall(VT& A, VT& B)
{
  VVI dp;
  int n = A.size(), m = B.size();
  dp.resize(n+1);
  for(int i=0; i<=n; i++) dp[i].resize(m+1, 0);
  for(int i=1; i<=n; i++)
    for(int j=1; j<=m; j++)
    {
      if(A[i-1] == B[j-1]) dp[i][j] = dp[i-1][j-1]+1;
      else dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
    }
  set<VT> res;
  backtrackall(dp, res, A, B, n, m);
  return res;
}
void UG_LOG_Vector(const VT &vec)
{
	for (size_t i=0; i<vec.size(); ++i)
	{ UG_LOG( vec[i] << " "); }
	UG_LOG(std::endl);
	/*{ std::cerr << vec[i] << " "; }
		std::cerr << std::endl;*/
}
VT LCS(VT& A, VT& B)
{
  VVI dp;
  int n = A.size(), m = B.size();
  dp.resize(n+1);
  for(int i=0; i<=n; i++) dp[i].resize(m+1, 0);
  
  for(int i=1; i<=n; i++)
    for(int j=1; j<=m; j++)
    {
      if(A[i-1] == B[j-1]) dp[i][j] = dp[i-1][j-1]+1;
      else dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
    }
    
  VT res;
  backtrack(dp, res, A, B, n, m);
  reverse(res.begin(), res.end());
  return res;
}
Example #5
0
 void gemv_generic (typename MT::value_type alpha, MT const & A, VT const & X, typename MT::value_type beta, VTOut & C) { 
  //std::cerr  << "gemm: generic call "<< std::endl ;
  // first resize if necessary and possible 
  resize_or_check_if_view(C,make_shape(first_dim(A)));
  if (second_dim(A) != X.size()) TRIQS_RUNTIME_ERROR << "gemm generic : dimension mismatch "<< second_dim(A) << " vs " << X.size();
  C() = 0;
  for (int i=0; i<first_dim(A); ++i)
   for (int k=0; k<second_dim(A); ++k)
    C(i) += A(i,k)*X(k);
 }
Example #6
0
int main() {
	int m = 4, n = 3;
	T _A[m][n] = {
		{6, -1, 0},
		{-1, -5, 0},
		{1, 5, 1},
		{-1, -5, -1}
	};
	T _b[m] = {10, -4, 5, -3};
	T _c[n] = {1, -1, 0};
	VVT A(m);
	VT b(_b, _b + m);
	VT c(_c, _c + n);
	for (int i = 0; i < m; i++) A[i] = VT(_A[i], _A[i] + n);
	LPSolver solver(A, b, c);
	VT x;
	T value = solver.Solve(x);
	cout << "Value: " << value << "\n";
	cout << "Solution:";
	for (size_t i = 0; i < x.size(); i++) cout << " " << x[i];
	cout << "\n";
	return 0;
}