Processo CCS para um dispensador de bebidas com dois preços diferentes

11

Um dispensador de bebidas exige que o usuário insira uma moeda ( ) e pressione um dos três botões: solicita uma xícara de chá , o mesmo para café , e solicita um reembolso (ou seja, a máquina devolve a moeda: ). Este dispensador pode ser modelado pelo seguinte processo CCS :ˉ d cháechá ˉ r ˉ bc¯d¯teaetear¯b¯

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

Uma guerra civil aumenta o preço do café para duas moedas, enquanto o preço do chá permanece uma moeda. Queremos uma máquina modificada que entregue café somente após duas moedas e aceite um reembolso após uma ou duas moedas. Como podemos modelar a máquina modificada com um processo CCS?

Gilles 'SO- parar de ser mau'
fonte
1
O que é um modelo / processo do CCS? Eles são equivalentes aos sistemas de transição rotulados (LTS)?
Raphael
1
@Raphael CCS é um cálculo de processo, um precursor do cálculo pi. Um modelo CCS é apenas um modelo no CCS. Adicionei um link da Wikipedia e uma tag wiki.
Gilles 'SO- stop being evil'
Eu acho que lógica e linguagens de programação são apropriadas para esta questão. As álgebras de processo são estudadas nessas áreas e, para essa questão, a lógica parece mais apropriada, por exemplo, verifique as tags de área aqui .
Kaveh

Respostas:

9

Você pode facilmente lucrar com a guerra dessa maneira:

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

note que você deve pressionar restituição para tomar um chá se colocar muitas moedas. Se você não quiser, pode adaptá-lo (ou talvez configurar um contador (finito é 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
fonte
Eu não entendo sua resposta. O primeiro processo que você mostra tem o preço do café em uma moeda e faz com que a máquina faça com que o usuário insira uma moeda. Não vejo nenhuma conexão com a pergunta. O segundo processo está no caminho certo, mas o que deve fazer? c¯
Gilles 'SO- stop being evil'
@ Gilles: devolve o dinheiro, mas seria melhor que você nos desse outro nome para devolver o dinheiro. c¯
Stéphane Gimenez
@ StéphaneGimenez Você está certo, eu adicionei isso.
Gilles 'SO- stop being evil'
@Gilles e Stéphane: você está certo, é uma péssima escolha para o reembolso. (Por exemplo, você pode exigir que a máquina seja assíncrona: e, em seguida, a máquina pode c¯r.(c¯M)
usá-
@Gilles: Eu escolhi também, independentemente de você. Eu acho que esta é a escolha canônica :-)b¯
Jmad
5

Esta máquina é mais conveniente do que a que você propõe: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

(Mas usar processos infinitos é como trapacear).

Stéphane Gimenez
fonte
Eu gosto do aspecto composicional aqui. No entanto, acho que é bom para o autômato não permitir mais de duas moedas?
Raphael
Bem, isso também dá uma idéia de como lidar com as moedas que têm valores diferentes :-)
Stéphane Gimenez