Red de conocimiento informático - Material del sitio web - ¿Algoritmo polinómico?

¿Algoritmo polinómico?

¿Qué es el algoritmo de tiempo polinómico 10 puntos?

Definición: Si existe una constante C tal que para todo ngt = 0, existe |f(n)| * |g(n)|, entonces se dice que la función f(n) es O(g(n)). Un algoritmo cuya complejidad temporal es O (p (n)) se denomina algoritmo de tiempo polinomial, donde p (n) es un polinomio en n. Los algoritmos que no pueden limitar su complejidad temporal de esta manera se denominan algoritmos de tiempo exponencial.

Por ejemplo: los algoritmos con una complejidad temporal de O(nlog(n)) y O(n^3) son todos algoritmos de tiempo polinómicos, y una complejidad temporal de O(n^log(n)) y O (n ^ 3) son todos algoritmos de tiempo polinomiales (n!), Los algoritmos O (2 ^ n) se refieren a algoritmos de tiempo.

Si se ha encontrado un algoritmo de tiempo polinomial para un problema de optimización, el problema se denomina problema resoluble en tiempo polinomial y el *** de este tipo de problema se denota por P. Por lo tanto, el tiempo polinómico El problema que tiene solución se llama Es un problema de tipo P.

Si un problema no encuentra un algoritmo de tiempo polinomial, entonces es intuitivamente "difícil" de resolver, pero a menudo es imposible demostrar la inexistencia de un algoritmo de tiempo polinomial. Dado que el fracaso en encontrar un algoritmo eficiente no significa necesariamente que dicho algoritmo no exista, esto ha planteado un problema difícil para los teóricos: por un lado, es difícil demostrar que no existe un algoritmo de tiempo polinomial para un problema. , y aún no se ha dado; por otro lado, es difícil demostrar que no existe un algoritmo de tiempo polinomial para un problema. Por un lado, hay un número cada vez mayor de problemas para los cuales no se pueden utilizar algoritmos de tiempo polinomial; dado. Al mismo tiempo, los teóricos están ansiosos por resolver este problema. Por esta razón, en la década de 1970 se presentó una hermosa teoría que atribuyó este fracaso a una profunda conjetura de datos. Esta teoría es la teoría de la completitud NP.

Definición: Ante un problema de decisión, si existe un algoritmo, para cualquier instancia donde la respuesta sea "sí". El algoritmo primero da una conjetura cuyo tamaño no excede una función polinómica de longitud de entrada I, y solo toma tiempo polinómico para verificar la exactitud de la conjetura, luego se dice que el problema pertenece a la clase NP.

Definición: Si todos los problemas de la clase NP se pueden reducir en tiempo polinómico a un determinado problema x de la clase NP, entonces se dice que x es un problema NP completo.

Definición: Si el problema de decisión de un problema de optimización x es NP-completo, entonces se dice que el problema x es NP-difícil; si el problema de decisión de x es fuertemente NP-completo, entonces el almacenamiento x es fuerte NP-duro.

Programación en lenguaje C de cálculo de polinomios.

Esto es realmente muy simple. Requiere 3 matrices (considere la matriz int por ahora), la longitud es 10 y los polinomios 1, 2 y los resultados del cálculo. se almacenan respectivamente. Inicializado a todos 0. Ingrese de acuerdo con sus suposiciones. Las tres matrices de entrada son:

Polinomio 1: [7, 0, -5, 2, 0, 0, 0, 0, 0, 0] (el coeficiente de la potencia 0 de x es 7, El primer coeficiente de potencia de p>

Resultado del cálculo: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] (aún no calculado, por supuesto que todos son 0)

La suma y la resta son muy difíciles. Fácil de calcular, no es necesario entrar en detalles. ¿Cómo calcular la multiplicación? Lo sabrás simplemente siguiendo los pasos de cálculo matemático real. Multiplicarás 3x2, x y -8 por 2x3-5x2 7 respectivamente, y finalmente sumarás los resultados. Convertirlo a programa es sumar varios arrays:

[-56, 0, 40, -16, 0, 0, 0, 0, 0, 0]

[ 0, 7, 0, -5, 2, 0, 0, 0, 0, 0]

[0, 0, 21, 0, -15, 6, 0, 0, 0, 0 ]

Simplemente suma.

En cuanto a mejorar el nivel, esta pregunta no es buena porque el resultado de la división polinómica no es único.

Por ejemplo, si 2x2 1 se divide por x2 1, puedes decir 2x2 1 = 2(x2 1) - 1, o puedes decir 2x2 1 = 1(x2 1) x2. Estas cuestiones tienen poca importancia matemática y el uso de programas para implementarlas no alcanzará el nivel de formación requerido. ¿Quizás lo entendí mal?

Dados dos polinomios, implemente el algoritmo de suma de dos polinomios.

Programación en lenguaje c

Cuando ingresas data2, parece que j está en for e i en scanf, por lo que no se puede leer.

for(j=0; j

scanf("dd",&data2[i].a,&data2[i].b);

Las dos últimas líneas

para (i=0 ;ilt;=t;i )

printf("d d\n", datos[t].a, datos[t].b);

i es el valor del paso, el resultado se genera usando t, debes usar data[i].a de todos modos

Calcular el valor del polinomio requiere un proceso completo

Espérame

Acerca del cálculo polinomial de estructura de datos (lenguaje C)

Acabo de terminar el diseño del curso y obtuve una A. Te la daré gratis. Te garantizo tu satisfacción y las hay. ¡casi sin lagunas! Archivo de encabezado #include #include #include definición Términos polinomiales typedef struct Polynomial{ float coef; int struct Polynomial *next }*Polyn, Polynomial Insert(Polyn p, Polynom h){ if(p- gt; coef==0) free(p); si el coeficiente es 0, libere el nodo else { Polyn q1, q1=h; q2=h-gt; expn expn) {Encontrar la posición de inserción q1=q2; q2=q2 -gt;next } if(q2amp;amp;p-gt;expn==q2-gt;expn) {Hacer los mismos índices en q2-gt; coef =p-gt;coef; free(p); if(!q2-gt; coef) {Si el coeficiente es 0, libera el nodo q1-gt; next=q2-gt; } else {Cuando el índice sea nuevo, inserte el nodo en p-gt; next= q2; q1-gt; next=p } } } Polyn CreatePolyn(Polyn head, int m){ Crea un polinomio de una variable int i; con el puntero de cabeza como cabeza y el número de términos como m; Polyn p=head=(Polyn) malloc(sizeof(struct head-gt) next=NULL; amp; p-gt; expn); Insert(p, head); Llame a la función Insertar para insertar el nodo} return head } void q1=p-gt; siguiente; q2=q1-gt; siguiente; while(q1-gt; siguiente) { libre(q1= q2; q2=q2-gt; siguiente; gt; next; int flag=1; contador de términos if(!q) { Si el polinomio está vacío, genera 0 putchar ('0'); printf("\n"); q-gt;coefgt;0amp;amp;flag!=1) putchar(' '); El coeficiente es mayor que 0 y no El primer elemento if(q-gt; coe

f!=1amp;amp;q-gt;coef!=-1) {El coeficiente no es 1 ni -1...gt;gt;

Cómo calcular 40 puntos para polinomios

Reglas de operación polinómica: si hay paréntesis, primero elimine los paréntesis y luego combine términos similares.

C Cálculo de polinomios

En el bucle principal de while(cingt; gt; ngt; gt; x), la suma debe restablecerse a cero cada vez que se ejecuta...

Pruebe esto

#include #include usando el espacio de nombres std; int main(void){ int a[9], n, i, j; 1; mientras(cingt;gt;ngt;gt;x) { para(i=n;igt;=0;i--) cingt;gt;a[i]; { suma =0; suma clara para (j=1; jlt; =n; j ) suma1*=x; suma =a[n]*sum1;