Tuesday 30 November 2010

More Friendship Algorithms

(somehow I feel like I've written a post almost identical to this before, but time is running out and I can't really check.)

QC said that I don't spend enough time with her and that I am possibly avoiding her, but as I said to her, and as I have said before, my personal policy for deciding what to do is based on first come, first served. I think it is the most fair, and the least messy algorithm to decide how you are going to spend your time.

It used to piss me off quite a lot during vanilla WoW when one of my guildies would say, "Hey, Anna, do you mind healing X for me?" and when I put together a party and I made my way over to the instance (because nobody ever wants to help summon unless someone is already there), said guildy would then turn around and say, "Oh, actually, I might go and play some XBox." While he is well within his rights to change his mind, there are four people who have gone out of their way to help him out, and now we are left stranded. He was the tank, which is the hardest party member to replace, so it wasn't even like we could do the instance ourselves and make something of the trip out.

I think it's acceptable if you have something else that can't be put off later, like you need to pick up your parents who got too drunk when they went out, something comes up suddenly, but in most cases I will try to stick with my original plan even if a better offer comes up. I have agreed to do something with someone, and they are expecting me to be there.

Still, I think QC is right when she said that I do prioritise certain people over others. My hierarchy pretty much goes family > MrMan5.5 > other friends. I will drop pretty much anything for family stuff, because even though I don't feel all that close to my family, they are my family and I love them (but usually the only time I have to do stuff for my family involves driving Amanda around when Mum has work, or taking Mum to the hospital). I'll usually only drop something for MrMan5.5 if it's an emergency. He understands that I have other people that I want to spend time with.

FCFS isn't perfect though, as there is a way to abuse the system - simply spamming requests pretty much ensures that you get to do as much as you possibly can with the person. I don't think there's anyone out there who wants to spend that much time with me though, so I don't really worry about that.

I think if you approached events like a stack, then it would just lead to a mess. Alice asks you to play Starcraft 2 with her, but before you start, Bob asks you to go and see a movie with him so you do that. However, before you get there, Carol asks you to have dinner with her. Before you make it to dinner Dave invites you to go bowling, etc. You can't really go last in, first out, because people may feel rejected that you chose another offer over theirs. So you end up just leaving behind a wake of rejections and probably have a few people you have to apologise to later.

What does make sense is a priority queue, which may end up being better off for you, but I think is less fair than FCFS. I guess I already do use a priority queue, as emergencies tend to jump to the top of the queue, but what I mean is, having a queue of offers, but if an offer appeals more to you, then you can shift it to the front. So Alice asks you to join her for dinner, but Bob calls you and says he bought the James Bond DVD collection and is marathoning them, which you think is more fun than having dinner with Alice. So you cancel on Alice, and spend time with Bob instead. Your personal enjoyment goes up, but like with the stack algorithm, you might cause a lot of people to get angry. I think this system is also unfair, as it biases certain people.

There's a lottery system, where you can allocate "tickets" to each offer, giving more tickets to the offer that appeals to you more, and then pick a random number to determine which "wins". I'm not sure how this system is supposed to work for asynchronous offers though. I guess at best, it could wait until the last possible moment before picking a winner. I think is unfair, like the priority queue, as there is a bias towards certain things/people - since you are the one who allocates the "tickets". It does have the random factor though, so it can be slightly more fair, depending on your algorithm for allocating tickets.

There's shortest job first, which I guess could be the equivalent of agreeing to the shortest events so that you can pack more into your day. The throughput is high, but it sounds kinda weird, and it's quite difficult to pull off successfully, as you might have to cut events off short in order to make it to the next event. It makes me think of those people on ABCotD who line up multiple dates for one night, and end up pissing off their date who finds out about the other dates. Again, like with CPUs, this suffers from the "exploit" that you could just get spammed with lots of short events and so someone could effectively hog all of your time (although that depends on whether you rate the time based on how long the event takes, or rate the time based on time spent with a person - the latter would lead to someone being unable to schedule a series of short, sequential events.

Though if QC is complaining that I am not spending enough time with her, then I guess it means something has fallen through the cracks and I should put more effort into trying to fix that. Still, that doesn't change the fact that I'm busy Christmas Eve. =(

No comments: