36 votos

Representación de IF ... ENTONCES ... ELSE ... en notación matemática

¿Cómo puedo representar correctamente el siguiente pseudocódigo en notación matemática?

EDIT1: Fórmula ampliada. EDIT2: Aclaración.

(a,b) representa un segmento de línea en una línea 1D. a <= b para cada segmento. La división que se muestra a continuación se realiza según el siguiente código T-SQL (que supongo que podría representarse como una función en la fórmula):

Entrada: @a1 real, @b1 real, @an real, @bn real

DECLARE @Result real

if @a1 <= @an begin
    SET @Result = @an - @b1

    if @Result <= 0 RETURN 0

    RETURN @Result / @an
end

SET @Result = @a1 - @bn

if @Result <= 0 RETURN 0

RETURN @Result / @a1

Fórmula:

if m = 1 then
  if (a,b)_1 intersects (a,b)_n then
    r = 1
  else if (a,b)_1 < (a,b)_n then
    r = (a,b)_1 / (a,b)_n
  else
    r = (a,b)_n / (a,b)_1
else if m = 2 then
  if (a,b)_1 intersects (a,b)_n then
    r = 1
  else if (a,b)_1 < (a,b)_n then
    r = (a,b)_1 / (a,b)_n
  else
    r = (a,b)_n / (a,b)_1

El bloque m = 2 se muestra igual que el m = 1 para simplificar.

Las divisiones son contra los dos puntos que están cerca uno del otro, a menos que los segmentos se crucen, en cuyo caso r = 1.

39voto

DanV Puntos 281

En general, si tiene "Si $\varphi$ entonces $\psi$ Si no es así $\tau$ "se puede escribir como la siguiente fórmula (o frase, según $\varphi,\psi,\tau$ ):

$\left(\varphi\rightarrow\psi\right)\wedge\left(\neg\varphi\rightarrow\tau\right)$

Si tiene varios casos, puede anidarlos (por ejemplo $\tau$ sería "si la segunda condición entonces, si no...") o si se pueden expresar como $\varphi_1$ lo que significa que sólo el primer caso se mantiene, y ninguno de los otros como $(\varphi_1\rightarrow\psi_1)\wedge(\varphi_2\rightarrow\psi_2)\wedge\ldots$

Adenda:

$(a=b\rightarrow x=1)\wedge(a<b\rightarrow x=\frac{a}{b})\wedge(a>b\rightarrow x=\frac{b}{a})$

He añadido $x$ como variable, ya que al escribir sólo $\rightarrow 1$ me parece muy poco significativo, por supuesto se puede sustituir $x$ por lo que quieras. La idea, esencialmente es que expreses "SI ... ENTONCES ... ELSE" utilizando el $\rightarrow$ (o $\implies$ a veces) y te di en mi post original el método para hacerlo.

7voto

Alex Bolotov Puntos 249

También podrías convertirlo en una fórmula matemática.

Por ejemplo, digamos que tenemos lo siguiente:

if (a < b) then c = 100 
else if (a > b) then c = 200
else c = 300.

Esto se puede reescribir como

$$c = 300 \ (1 - \text{sgn}^2(a-b)) + \text{sgn}^2(a-b)(50 \ \text{sgn}(a-b) + 150)$$

Donde $\text{sgn}(x)$ es el signo de $x$ como se define aquí; http://en.wikipedia.org/wiki/Sign_function .

(Se define como: 1 para lo positivo, 0 para lo nulo y -1 para lo negativo)

7voto

MuchToLearn Puntos 32

Esta fue una edición rechazada en la respuesta aceptada, así que la estoy publicando como una nueva respuesta en su lugar. Sólo quería señalar que "Si $\varphi$ entonces $\psi$ , si no $\tau$ "es equivalente a $(\varphi\wedge\psi)\vee(\neg\varphi\wedge\tau)$ . Desde $P \to Q$ equivale a $\neg P \vee Q$ podemos ampliar $(\varphi\rightarrow\psi)\wedge(\neg\varphi\rightarrow\tau)$ de la siguiente manera:

$\begin{align*} (\varphi\rightarrow\psi)\wedge(\neg\varphi\rightarrow\tau) &\iff (\neg\varphi\vee\psi)\wedge(\varphi\vee\tau) \\ &\iff \left((\neg\varphi\vee\psi)\wedge\varphi\right)\vee\left((\neg\varphi\vee\psi)\wedge\tau\right) \\ &\iff (\varphi\wedge\psi)\vee(\neg\varphi\wedge\tau)\vee(\psi\wedge\tau) \end{align*}$

El último término, $(\psi\wedge\tau)$ es redundante. Esto se puede corroborar con una tabla de verdad, pero debería ser intuitivo ya que los dos primeros términos cubren todos los casos debido a la presencia de $\varphi$ y $\neg\varphi$ . Así, el concepto de "Si $\varphi$ entonces $\psi$ , si no $\tau$ "es matemáticamente equivalente a la fórmula lógica sentencial $(\varphi\wedge\psi)\vee(\neg\varphi\wedge\tau)$ .

6voto

Andrew Myhre Puntos 851

O simplemente $\begin{cases} a & b \\ c & d \end{cases}$

3voto

CallMeLaNN Puntos 111

Cómo implementar estructuras If-then-else en la lógica proposicional:

Ejemplo 1

Si P entonces
  Q
si no
  R
fin si

(P -> Q) & (~P -> R)

Ejemplo 2

Si P entonces
  Q
si no, si R entonces
  S
si no
  T
fin si

(P -> Q) & (~P & R -> S) & (~P & ~R -> T)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X