Exemplo n.º 1
0
// Create the 1-best derivation for each edge in BS(v) (except the best one)
// and add it to v's candidate queue.
void KBestExtractor::GetCandidates(boost::shared_ptr<KVertex> v, std::size_t k)
{
  // Create 1-best derivations for all of v's incoming edges except the best.
  // The 1-best derivation for that edge will already have been created.
  for (std::size_t i = 0; i < v->svertex.recombined.size(); ++i) {
    const SHyperedge &shyperedge = *(v->svertex.recombined[i]);
    boost::shared_ptr<KHyperedge> bestEdge(new KHyperedge(shyperedge));
    bestEdge->head = v;
    // Count the number of incoming vertices that are not terminals.
    std::size_t kTailSize = 0;
    for (std::size_t j = 0; j < shyperedge.tail.size(); ++j) {
      const SVertex *pred = shyperedge.tail[j];
      if (pred->best) {
        ++kTailSize;
      }
    }
    bestEdge->tail.reserve(kTailSize);
    for (std::size_t j = 0; j < shyperedge.tail.size(); ++j) {
      const SVertex *pred = shyperedge.tail[j];
      if (pred->best) {
        bestEdge->tail.push_back(FindOrCreateVertex(*pred));
      }
    }
    boost::shared_ptr<Derivation> derivation(new Derivation(bestEdge));
#ifndef NDEBUG
    std::pair<DerivationSet::iterator, bool> q =
#endif
      m_derivations.insert(derivation);
    assert(q.second);
    v->candidates.push(derivation);
  }
}
Exemplo n.º 2
0
int main() {
  functions();
  multi_variable_functions();
  derivation();
  more_about_derivation();
  higher_level_derivatives();
  more_functions();
  higher_order_functions();
  simplifications();
  integers();
#ifdef AUTO_DERIVE_COMPLEX_TESTS
  complex_variables();
#endif
}
Exemplo n.º 3
0
Arquivo: tp5.c Projeto: MiLk/NF16-TP5
int main(int argc, char** argv)
{
    int n = 0, m = 0, i = 0, taille = 0;
    char v;
    NodePtr tab[50], node;
    do
    {
        printf("1- Saisir une expression\n2- Selectionner une expression\n");
        scanf("%d", &n);
        switch (n)
        {
        case 1:
            if (taille < 50)
            {
                getchar();
                node = saisie_expression();
                if(node != NULL)
                {
                    taille++;
                    tab[taille]= node;
                    affiche_expression(tab[taille]);
                }
                printf("\n\n");
            } else
                printf("Erreur. Trop d'expressions ont ete saisies.\n");
            break;
        case 2:
            if (taille > 0)
            {
                for (i = 1; i <= taille; i++)
                {
                    printf("%d- ", i);
                    affiche_expression(tab[i]);
                    printf("\n");
                }
                scanf("%d", &n);
                printf("\nFonctions a executer :\n"
                       "1- Affichage pre-ordre\n"
                       "2- Affichage in-ordre\n"
                       "3- Affichage post-ordre\n"
                       "4- Duplication\n"
                       "5- Calcul\n"
                       "6- Developpement\n"
                       "7- Derivation\n"
                       "8- Affichage\n"
                      );
                scanf("%d", &m);
                switch (m)
                {
                case 1:
                    pre_ordre(tab[n]);
                    printf("\n\n");
                    break;
                case 2:
                    in_ordre(tab[n]);
                    printf("\n\n");
                    break;
                case 3:
                    post_ordre(tab[n]);
                    printf("\n\n");
                    break;
                case 4:
                    taille++;
                    tab[taille] = clone(tab[n]);
                    printf("Nouvelle expression generee.\n\n");
                    break;
                case 5:
                    calcul(tab[n]);
                    printf("\nResultat :\n");
                    affiche_expression(tab[n]);
                    printf("\n\n");
                    break;
                case 6:
                    developpement(tab[n]);
                    printf("\nResultat :\n");
                    affiche_expression(tab[n]);
                    printf("\n\n");
                    break;
                case 7:
                    printf("\nSaisir la variable de derivation\n");
                    getchar();
                    scanf("%c", &v);
                    derivation(tab[n], v);
                    printf("\nResultat :\n");
                    affiche_expression(tab[n]);
                    printf("\n\n");
                    break;
                case 8:
                    affiche_expression(tab[n]);
                    printf("\n\n");
                    break;
                }
            } else
                printf("Aucune expression n'a ete saisie.\n");
            break;
        }
    } while (n > 0);
    for (i = 1; i <= taille; i++)
        liberer_noeud(tab[i]);
    return (EXIT_SUCCESS);
}
Exemplo n.º 4
0
double LeastSquares::newton(std::vector<double> equation, double x){
	std::vector<double> numerator = derivation(equation);
	return (x - (this->equationSolution(equation, x) / (this->equationSolution(numerator, x))));
}