Proceso CCS para un dispensador de bebidas con dos precios diferentes.

11

Un dispensador de bebidas requiere que el usuario inserte una moneda ( ), luego presione uno de los tres botones: solicita una taza de té , lo mismo para el café , y solicita un reembolso (es decir, la máquina devuelve la moneda: ). Este dispensador puede modelarse mediante el siguiente proceso CCS :c¯d¯teaetear¯b¯

M=defc.(dtea.e¯tea.M+dcoffee.e¯coffee.M+r.b¯.M)

Una guerra civil eleva el precio del café a dos monedas, mientras que el precio del té sigue siendo una moneda. Queremos una máquina modificada que entregue café solo después de dos monedas y acepte un reembolso después de una o dos monedas. ¿Cómo podemos modelar la máquina modificada con un proceso CCS?

Gilles 'SO- deja de ser malvado'
fuente
1
¿Qué es un modelo / proceso CCS? ¿Son equivalentes a los sistemas de transición etiquetados (LTS)?
Raphael
1
@Raphael CCS es un cálculo de proceso, un precursor del cálculo pi. Un modelo CCS es solo un modelo en CCS. He agregado un enlace de Wikipedia y una etiqueta wiki.
Gilles 'SO- deja de ser malvado'
Creo que la lógica y los lenguajes de programación son apropiados para esta pregunta. Las álgebras de procesos se estudian en estas áreas, y para esta pregunta la lógica parece más apropiada, por ejemplo, compruebe las etiquetas de área aquí .
Kaveh

Respuestas:

9

Puede beneficiarse fácilmente de la guerra de esa manera:

M=defc.(dtea.e¯tea.M+r.b¯.M+c.(dcoffee.e¯coffee.M+r.b¯.b¯.M))

tenga en cuenta que debe presionar el reembolso para obtener un té si pone demasiadas monedas. Si no quiere eso, puede adaptarlo (o tal vez configurar un contador (finito es suficiente)):

M=defc.(dtea.e¯tea.M+r.b¯.M+c.(dcoffee.e¯coffee.M+dtea.b¯.e¯tea.M+r.b¯.b¯.M))
jmad
fuente
No entiendo tu respuesta. El primer proceso que muestra tiene el precio del café en una moneda, y hace que la máquina de alguna manera haga que el usuario inserte una moneda. No veo ninguna conexión con la pregunta. El segundo proceso se ve en el camino correcto, pero ¿qué se supone que debe hacer ? c¯
Gilles 'SO- deja de ser malvado'
@Gilles: devuelve el dinero, pero sería mejor si nos dieras otro nombre para devolver el dinero. c¯
Stéphane Gimenez
@ StéphaneGimenez Tienes razón, lo he agregado.
Gilles 'SO- deja de ser malvado'
@Gilles y Stéphane: tienes razón, es una muy mala elección para el reembolso. (Por ejemplo, podría requerir que la máquina sea asíncrona: y luego la máquina podría tomarla por sí misma, ¡así que tendrá que apresurarse a recuperar su dinero!)c¯r.(c¯M)
jmad
@Gilles: Elegí también, independientemente de ti. Supongo que esta es la elección canónica :-)b¯
jmad
5

Esta máquina es más conveniente que la que usted propone:M0

M0:=c.M1

M1:=dtea.e¯tea.M1+r.b¯.M0+c.M2

Mn:=dtea.e¯tea.Mn1+dcoffee.e¯coffee.Mn2+r.b¯.b¯.nM0+c.Mn+1

(Pero usar procesos infinitos es como hacer trampa).

Stéphane Gimenez
fuente
Me gusta el aspecto compositivo aquí. Sin embargo, supongo que está bien que el autómata no permita más de dos monedas.
Raphael
Bueno, esto también da una idea de cómo lidiar con monedas que tienen valores diferentes :-)
Stéphane Gimenez